DataGridView Event

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
 
J

John Wright

Well it appears no one else could, so I thought I would save someone the
trouble. Thank you sir, for responding.
 
J

Jack Jackson

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.
 
K

Kevin S Gallagher

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)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top