PNRT
asked on
VB.Net Removing Rows from DataGridView
Hi Experts
I have a datagridview with two columns and about 250 rows There are 20 rowsin the second column with the value "No Information"
and I want to delete these. I have rigged a button just for testing.
This code for testing works but only gives me a MessageBox 9 times not 20, I thought it would give me 20
This Code is intermittent, sometimes removing 4 "No Information" and sometimes 8, not 20
The data in the Rows is identical each time I run it and I even tried comparing the values length to see if they were not the same
I've also tried variations of For i = 0 To DGV1.Rows.Count With no success.
What am I doing wrong??
Many Thanks
I have a datagridview with two columns and about 250 rows There are 20 rowsin the second column with the value "No Information"
and I want to delete these. I have rigged a button just for testing.
This code for testing works but only gives me a MessageBox 9 times not 20, I thought it would give me 20
Dim DGV1Row As DataGridViewRow
Dim CheckValue As String
For Each DGV1Row In DGV1.Rows
CheckValue = DGV1Row.Cells(1).Value
If CheckValue = "No Information" Then
MsgBox(CheckValue)
End If
Next
This Code is intermittent, sometimes removing 4 "No Information" and sometimes 8, not 20
Dim DGV1Row As DataGridViewRow
Dim CheckValue As String
For Each DGV1Row In DGV1.Rows
CheckValue = DGV1Row.Cells(1).Value
If CheckValue = "No Information" Then
DGV1.Rows.Remove(DGV1Row)
End If
Next
The data in the Rows is identical each time I run it and I even tried comparing the values length to see if they were not the same
I've also tried variations of For i = 0 To DGV1.Rows.Count With no success.
What am I doing wrong??
Many Thanks
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
How are you loading the DataGridView? From DB, a List Object or something else and are you using a BindingSource to feed the DataGridView?
ASKER
No, just running a bunch of queries and adding the result to the datagridview with
frmMain.DGV1.Rows.Add(New String() {Value1, Value2})
frmMain.DGV1.Rows.Add(New String() {Value1, Value2})
Can you show/post all relevant code for creating and filling the DataGridView control please.
ASKER
Thank you Fernando
I will step back a bit and remove everything except the datagridview and the added data code and see if I can reproduce it. Thanks again,
I will step back a bit and remove everything except the datagridview and the added data code and see if I can reproduce it. Thanks again,
ASKER
Hi
I think I have found the problem and the fix although I don't know why VB seems to have added rubbish to some, not all of my queries and produced this
frmMain.DGV1.Rows.Add(New String() {Value1, CType(CType(CType(CType(CT ype(CType( CType(Valu e2, String), String), String), String), String), String), String)})
I don't understand why but it looks as though for some queries I was not testing again a string at all.
By just Adding ....... Value2.ToString removes it from the Datagridview
I think I have found the problem and the fix although I don't know why VB seems to have added rubbish to some, not all of my queries and produced this
frmMain.DGV1.Rows.Add(New String() {Value1, CType(CType(CType(CType(CT
I don't understand why but it looks as though for some queries I was not testing again a string at all.
By just Adding ....... Value2.ToString removes it from the Datagridview
How are you doing your query? What technology are you using ADO.Net, Entity Framework, Linq to SQL or something else? It is hard to understand what is happening without knowing this.
ASKER
.Net 4.5.2, querying win32 class and securityCenter2 and other classes, but I have installed CodeRush recently and not really sure what I'm doing with yet. Maybe I have it set up wrong.
Thanks for your help. At least I could see where I was going wrong and it wasn't in the first code..
Thanks for your help. At least I could see where I was going wrong and it wasn't in the first code..
ASKER
Many Thanks for the reply
No luck I'm afraid
I added Dim i As Integer
It does the same, deletes four or five of the values only.