如何根据单元格值在datagridview行中应用循环

时间:2017-12-29 17:03:58

标签: vb.net

我遇到了在datagridview中循环的问题,其中我有3列。 第1栏,第2栏和第3栏。

当“Column2”值等于或大于75时,“Column3”值等于“Column1”。否则“Column3”等于0。

如果“Column2”值为“IP”或“NFE”,则“Column3”值等于0。

以下是插图:

  Column1   Column2    Column3
     3         78        3
     3         76        3
     3         65        0
     3         IP        0
     3        NFE        0

我试过这段代码;

Private Sub DGVGRADES_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DGVGRADES.CellValueChanged
    For Each row As DataGridViewRow In DGVGRADES.Rows
        If row.Cells(4).Value >= 75 Then
            row.Cells(0).Value = row.Cells(3).Value
        ElseIf row.Cells(4).Value.ToString <= 3 Then
            row.Cells(0).Value = row.Cells(3).Value
        ElseIf row.Cells(4).Value < 75 Then
            row.Cells(0).Value = 0
        ElseIf row.Cells(4).Value = "IP" Then
            row.Cells(0).Value = 0
        End If
    Next
End Sub

但是给我这个错误。

  

从字符串“IP”到“Double”类型的转换无效。

对于我的学校要求,我真的非常需要帮助。感谢

1 个答案:

答案 0 :(得分:0)

这应该是您的功课的一个简单的解决方案。但是你应该理解代码,而不仅仅是复制/粘贴答案。

Private Sub DGVGRADES_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DGVGRADES.CellValueChanged
    For Each row As DataGridViewRow In DGVGRADES.Rows
        If Double.TryParse(row.Cells(4).Value, Nothing) = False Then
            If row.Cells(4).Value.ToString = "NFE" Then
                row.Cells(0).Value = 0
            ElseIf row.Cells(4).Value.ToString = "IP" Then
                row.Cells(0).Value = 0
            End If
        Else

            If row.Cells(4).Value >= 75 Then
                row.Cells(0).Value = row.Cells(3).Value
            ElseIf row.Cells(4).Value.ToString <= 3 Then
                row.Cells(0).Value = row.Cells(3).Value
            ElseIf row.Cells(4).Value < 75 Then
                row.Cells(0).Value = 0
            End If
        End If
    Next
End Sub