简体   繁体   中英

Counting filled rows in Datagridview

I'm trying to count the filled rows in datagridview by a function.
This function contains 2 parameters, 1st one is the count of columns which i want to be filled and 2nd one the count of rows of datagridview.
I tried this code:

Function dgvAggregate(ByVal colNum As Integer, ByVal dgvcount As Integer)
    Dim x As Integer = 0
    For i As Integer = 0 To dgvcount - 1
        For j As Integer = 0 To colNum
            If Not (dg.Rows(i).Cells(j).Value = Nothing) Then
                x += 1

            End If
        Next j
    Next i
    Return x
End Function  

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
    MsgBox(dgvAggregate(2, dg.Rows.Count))
End Sub  

But this code return the number of cells that has a value!
How can i count only rows depending on the columns count entered by user?

You are incrementing x for every cell which has a value. You need to be testing and incrementing on a row basis, in your loop over i .

You need to set a flag at the start of the loop and then check for any columns with nothing , updating the flag if you find some. If the flag hasn't been updated, then increment x .

Function dgvAggregate(ByVal colNum As Integer, ByVal dgvcount As Integer)
    Dim x As Integer = 0
    Dim emptyColumns as Integer = 0

    For i As Integer = 0 To dgvcount - 1
        emptyColumns = 0
        For j As Integer = 0 To colNum
            If dg.Rows(j).Cells(i).Value = Nothing Then
                emptyColumns += 1
            End If
        Next j
        If emptyColumns = 0 Then
            x += 1
        End If
    Next i

    Return x
End Function  

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
    MsgBox(dgvAggregate(2, dg.Rows.Count))
 End Sub  

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM