none
DataGridView com CheckBox RRS feed

  • Pergunta

  • Olá.

    Criei um datagidView e inseri uma coluna checkBox.

    Em um botão fiz uma rotina que soma os valores de uma coluna, de todas as linhas onde o checkBox está assinalado, porém não estou obtendo o valor correto. Vejam o texto abaixo do grid.

    Tentei assim:

        Private Sub Pic_CriarAcordo_Click(sender As Object, e As EventArgs) Handles pic_CriarAcordo.Click, lbl_CriarAcordo.Click
            Dim row As New DataGridViewRow()
            Dim i As Integer = 0
    
            Dim total As Double = 0
            Dim valor As Double = 0
    
    
            While i < dgv_Taxas.Rows.Count
                If Convert.ToBoolean(dgv_Taxas.Rows(i).Cells(0).Value) Then
                    valor = Convert.ToDouble(dgv_Taxas.Rows(i).Cells(4).Value)
                    total += valor
                End If
                i += 1
            End While
    
            If total > 0 Then
                lbl_Total.Text = "Valor a ser acordado: " + total.ToString
            Else
                lbl_Total.Text = ""
            End If
    
        End Sub

    e assim:

        Private Sub Pic_NovoAcordo_Click(sender As Object, e As EventArgs) Handles pic_NovoAcordo.Click, lbl_NovoAcordo.Click
            Dim row As New DataGridViewRow()
            Dim i As Integer = 0
            Dim total As Double = 0
            Dim valor As Double = 0
    
            lbl_Total.Text = ""
    
            For i = 0 To dgv_Taxas.Rows.Count - 1
                If dgv_Taxas.Rows(i).Cells(4).Value = True Then
                    valor = Convert.ToDouble(dgv_Taxas.Rows(i).Cells(3).Value)
                    total += valor
                End If
            Next
    
            If total > 0 Then
                lbl_Total.Text = "Valor a ser acordado: " + total.ToString
            Else
                lbl_Total.Text = ""
            End If
    
        End Sub
    


    Sergio Ivanenko



    • Editado Ivanenko quinta-feira, 4 de julho de 2019 18:48
    quarta-feira, 3 de julho de 2019 19:28

Respostas

  • Bom, resolvi.

    Notei que a ultima linha selecionada/clicada, o valor do checkBox não alterava, apesar de demonstrar que estava ou não assinalado.

    Então no evento CellClick do dataGridView inseri o seguinte:

     Private Sub Dgv_Taxas_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv_Taxas.CellClick
            If e.ColumnIndex = 4 Then
                If dgv_Taxas.Item(4, e.RowIndex).Value = True Then
                    dgv_Taxas.Item(4, e.RowIndex).Value = False
                Else
                    dgv_Taxas.Item(4, e.RowIndex).Value = True
                End If
            End If
        End Sub
     

    Nota-se na imagem abaixo que a linha selecionada, conforme imagem no início do post, está com o checkBox assinalado, porém o "Valor e ser acordado", agora está correto.


    Sergio Ivanenko

    • Marcado como Resposta Ivanenko quarta-feira, 10 de julho de 2019 14:14
    quarta-feira, 10 de julho de 2019 14:13