I have a label that calculates how many rows the datagridview has and certainly do not want a blank row to be included. It has a blank row at the very top of the datagridview and sometimes in the middle. If it is possible, I want to delete all empty rows.

This code is not working:

For i As Integer = 1 To DataGridView1.RowCount - 2

            If DataGridView1.Rows(i).Cells(0).Value.ToString() = "" OrElse DataGridView1.Rows(i).Cells(8).Value.ToString() = "" Then


                DataGridView1.Rows.RemoveAt(i)
                i -= 1

            End If
        Next

Recommended Answers

All 5 Replies

I used the following Sub Procedure called DeleteRow but still didn't work:

   Dim Empty As Boolean = True

    For i As Integer = 0 To DataGridView1.Rows.Count - 1
        Empty = True
        For j As Integer = 0 To DataGridView1.Columns.Count - 1
            If DataGridView1.Rows(i).Cells(j).Value IsNot Nothing AndAlso DataGridView1.Rows(i).Cells(j).Value.ToString() <> "" Then
                Empty = False
                Exit For
            End If
        Next
        If Empty Then
            DataGridView1.Rows.RemoveAt(i)
        End If
    Next

P.S. Is creating a Sub Procedure for that and pasting that Sub Procedure to Form's Load event is wise?

Your problem is in construction of For Loop.
Removing Loops must be ran from highest listitem count to lowest by steping -1. Whatever may be the object is a ListBox, ComboBox, DataGridView or ListView.
Always remember that, in for loop the upper limits must be fixed. You can not change through its execution.You can change/set Lower Limit through execution.
The codes should be

For i As Integer = DataGridView1.RowCount - 1 To 1 Step -1
    If Trim(DataGridView1.Rows(i).Cells(0).Value.ToString()) = "" Then
        DataGridView1.Rows.RemoveAt(i)

    End If
Next

Hope it can help you.

Dim blank As Boolean = True
        For Each _row As DataGridViewRow In dgv.Rows
            blank = True
            For i As Integer = 0 To _row.Cells.Count - 1
                If _row.Cells(i).Value IsNot Nothing AndAlso _row.Cells(i).Value <> "" Then
                    blank = False
                    Exit For
                End If
            Next
            If blank Then
                If Not _row.IsNewRow Then
                    dgv.Rows.Remove(_row)

                End If
            End If
        Next

this code working for me only in one datagridview bur what if i want to clear from multi datagridview???

sorry for posting 2 times but i couldn't write comment with code in the same reply

i used new code to select data >0
"select * from table where coloumn>0
coloumn is coloumn header

it worked for me for 5 datagridview at the same time and remove all null or empty rows ....try

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.