我的代码适用于大多数但并非所有行

时间:2018-12-28 22:47:31

标签: vb.net

我有代码将datagridview每行中的单元格中的值求和,并将结果放入同一行中的另一个单元格中。它适用于大多数行,但是即使单元格中有值,也不会随机给出任何结果。我不知道是什么原因造成的。

 For i = 0 To ct
        tot1 = 0
        tot2 = 0
        tot3 = 0
        tot4 = 0
        tot5 = 0
        If Not IsDBNull(dgvPrice.Rows(i).Cells(10).Value) Then
            If dgvPrice.Rows(i).Cells(10).Value > 0 Then
                tot1 = dgvPrice.Rows(i).Cells(10).Value
            End If
        End If
        If Not IsDBNull(dgvPrice.Rows(i).Cells(11).Value) Then
            If dgvPrice.Rows(i).Cells(11).Value > 0 Then
                tot2 = dgvPrice.Rows(i).Cells(11).Value
            End If
        End If
        If Not IsDBNull(dgvPrice.Rows(i).Cells(12).Value) Then
            If dgvPrice.Rows(i).Cells(12).Value > 0 Then
                tot3 = dgvPrice.Rows(i).Cells(12).Value
            End If
        End If
        If Not IsDBNull(dgvPrice.Rows(i).Cells(13).Value) Then
            If dgvPrice.Rows(i).Cells(13).Value > 0 Then
                tot4 = dgvPrice.Rows(i).Cells(13).Value
            End If
        End If
        tot5 = tot1 + tot2 + tot3 + tot4
        If Not IsDBNull(dgvPrice.Rows(i).Cells(7).Value) Then
            If tot5 > 0 Then
                dgvPrice.Rows(i).Cells(21).Value = tot5
            ElseIf tot5 = 0 And dgvPrice.Rows(i).Cells(7).Value > 0 Then
                dgvPrice.Rows(i).Cells(21).Value = dgvPrice.Rows(i).Cells(7).Value
            ElseIf tot5 = 0 And dgvPrice.Rows(i).Cells(7).Value = 0 Then
                dgvPrice.Rows(i).Cells(7).Value = 0
            End If
        End If
    Next

1 个答案:

答案 0 :(得分:0)

只需将列索引调整为10到13,然后将总数放入Cell(27)。我添加了内部循环以遍历各列。如果单元格中没有任何内容,Continue For只会将执行移回到For行。 dgvPrice.Rows.Count - 2是因为AllowUserToAddRows在默认情况下为True,因此网格中有多余的空行。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim intValue As Integer
    For rowIndex = 0 To dgvPrice.Rows.Count - 2
        Dim total As Integer = 0
        For columnIndex = 0 To 2
            If IsNothing(dgvPrice.Rows(rowIndex).Cells(columnIndex).Value) Then
                Continue For
            End If
            Integer.TryParse(dgvPrice.Rows(rowIndex).Cells(columnIndex).Value.ToString, intValue)
            total += intValue
        Next
        dgvPrice.Rows(rowIndex).Cells(3).Value = total
    Next
End Sub