DataGridView Event

  • Thread starter Thread starter John Wright
  • Start date Start date
J

John Wright

I have a datagridview on my form that has two columns. Column 0 is a
checkbox, column 1 is a text field. When a user checks or unchecks the
checkbox, I need to get a count of all the checked items in the datagrid. I
tried to use cellclick, cellvaluechanged, CellMouseUp and I cannot get the
event to fire for the first click.

I am attaching the code to show what I am doing (I am just looping through
the table and counting all the items where cell(0) is true). What event
should I use to get the value. When I use cellclick is doesn't register the
checkbox as checked/unchecked so the count is off. Thanks.

Code:
Dim intPieceCount As Integer = 0

Dim i As Integer = dgEPNItems.Rows.Count - 1
For x As Integer = i To 0 Step -1
If x < 0 Then
Exit For
End If
Dim dr As DataGridViewRow
dr = dgEPNItems.Rows(x)
If dr.Cells(0).Value = True Then
intPieceCount += 1
End If
Next
txtQuantity.Text = CStr(intPieceCount)

John
 
Well it appears no one else could, so I thought I would save someone the
trouble. Thank you sir, for responding.
 
I was not thanking you for letting us know you solved it, but it was
an attempt at sarcasm, since you didn't tell us HOW you solved the
problem, and therefore your post won't help anyone else who has the
same problem.
 
Since there was never a solution mentioned how about this for VS2008

<Runtime.CompilerServices.Extension()> _
Public Function CheckCount(ByVal GridView As DataGridView, ByVal ColumnIndex
As Integer, ByVal Checked As Boolean) As Integer
Dim Result = (From Rows In GridView.Rows.Cast(Of DataGridViewRow)() Where
CBool(Rows.Cells(ColumnIndex).Value) = Checked).ToList
If Not IsNothing(Result) Then
Return Result.Count
Else
'
' You decide how to handle
'
End If
End Function

' where column 0 is the column with the checkbox
Dim CheckedCount As Integer = DataGridView1.CheckCount(0, True)
MsgBox(CheckedCount)
 
Back
Top