none
Assinalar CheckBox do DataGridview ao entrar no form RRS feed

  • Pergunta

  • Olá pessoal, gostaria de saber porque nessas rotinas, o CheckBox só é marcado se clicar no botão, gostaria que ao entrar no form, os CheckBox do DataGridView, fossem marcados, o que há de errado nessas rotinas ?.

    private void frmLancDespesas_Load(object sender, EventArgs e)
    {
        atualizagrid();
        button1.PerformClick();
    }

    private void atualizagrid()
    {
        dgvLancaDespesas.DataSource = bllL.SelecionaTodosLancamentos(); // EXECUTA LancDespesaBLL.cs
        bllL.MontaCabecalho(dgvLancaDespesas);
    }

    // ROTINA PARA ASSINALAR CheckBox no DataGridView

    private void button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i <= dgvLancaDespesas.Rows.Count - 1; i++)
        {
            if (dgvLancaDespesas["STATUS", i].Value.ToString() == "1")
            {
                dgvLancaDespesas.Rows[i].Cells["chk"].Value = true;
            }
            else
            {
                dgvLancaDespesas.Rows[i].Cells["chk"].Value = false;
            }
        }
    }

    C#, WindowsForm

    quinta-feira, 24 de outubro de 2019 21:12

Todas as Respostas

  • Esse código da forma que esta funciona?
    Caso funcione o que você pode fazer é alterar o código e deixar assim:

    private void frmLancDespesas_Load(object sender, EventArgs e)
    {
        atualizagrid();
        MarcarCheckBox();
    }

    // ROTINA PARA ASSINALAR CheckBox no DataGridView
    private void MarcarCheckBox()
    {
        for (int i = 0; i <= dgvLancaDespesas.Rows.Count - 1; i++)
        {
            if (dgvLancaDespesas["STATUS", i].Value.ToString() == "1")
            {
                dgvLancaDespesas.Rows[i].Cells["chk"].Value = true;
            }
            else
            {
                dgvLancaDespesas.Rows[i].Cells["chk"].Value = false;
            }
        }
    }
    sexta-feira, 25 de outubro de 2019 15:10
  • Olá Luciano, desta forma também não deu certo, só consigo marcar os CheckBox quando a Grid já está na tela e em seguida clicar no botão, quando o form é mostrado na tela, só aparece o DataGridView populado, mas sem os CheckBox marcados, entendeu.
    sexta-feira, 25 de outubro de 2019 16:05
  • Porter,

    Como você preenche tua grid ? Qual o Data Source dele ?


    Antero Marques
    _______________________________________________________________________________
    Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta. O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.


    sexta-feira, 25 de outubro de 2019 17:42
  • Olá Antero, seleciono as despesas que está em LancDespesaBLL e monto a grid que também está em LancDespesaBLL, em seguida tento marcar os chequebox executando o MarcarCheckBox() isso já no Load do form.

    private void atualizagrid()
    {
        dgvLancaDespesas.DataSource = bllL.SelecionaTodosLancamentos(); // EXECUTA LancDespesaBLL.cs
        bllL.MontaCabecalho(dgvLancaDespesas); // EXECUTA LancDespesaBLL.cs
        MarcarCheckBox();
    }

    //LancDespesaBLL.cs

    public DataTable SelecionaTodosLancamentos()
    {
        DataTable dt = new DataTable();
        try
        {
            bd = new AcessoBancoDados();
            bd.Conectar();
            string sql = "select L.CODDESP, L.DATA, D.DESCRICAO, L.VENCIMENTO, L.VALOR, L.STATUS, L.ID " +
            "FROM LANDESPESAS L, DESPESAS D WHERE L.CODDESP = D.ID ORDER BY ID DESC";
            dt = bd.RetDataTable(sql);
        }
        catch (Exception ex)
        {
            throw new Exception("Erro ao tentar selecionar Despesa: " + ex.Message);
        }
        finally
        {
            bd = null;
        }
        return dt;
    }

    //LancDespesaBLL.cs

    public DataGridView MontaCabecalho(DataGridView minhaGrid)
    {
        // CABEÇALHO
        minhaGrid.Columns["CODDESP"].HeaderText = "Código";
        minhaGrid.Columns["ID"].HeaderText = "Id";
        minhaGrid.Columns["DESCRICAO"].HeaderText = "Descrição";
        minhaGrid.Columns["DATA"].HeaderText = "Data";
        minhaGrid.Columns["VENCIMENTO"].HeaderText = "Vencimento";
        minhaGrid.Columns["VALOR"].HeaderText = "Valor";
        minhaGrid.Columns["STATUS"].HeaderText = "Status";

        // OCULTAR CAMPO STATUS
        //minhaGrid.Columns["STATUS"].Visible = false;    

        if (!minhaGrid.Columns.Contains("chk"))
        {
            DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn();
            chk.HeaderText = "";
            chk.Name = "chk";
            chk.FalseValue = 0;
            chk.TrueValue = 1;
            minhaGrid.Columns.Insert(6, chk);
            minhaGrid.Columns["chk"].Width = 25;
        }
        return minhaGrid;
    }

    // ROTINA PARA ASSINALAR CheckBox no DataGridView
    private void MarcarCheckBox()
    {
        for (int i = 0; i <= dgvLancaDespesas.Rows.Count - 1; i++)
        {
            if (dgvLancaDespesas["STATUS", i].Value.ToString() == "1")
            {
                dgvLancaDespesas.Rows[i].Cells["chk"].Value = true;
            }
            else
            {
                dgvLancaDespesas.Rows[i].Cells["chk"].Value = false;
            }
        }
    }

    C#, WindowsForm

    sexta-feira, 25 de outubro de 2019 18:14