检查datagridview的值

时间:2018-07-05 14:32:36

标签: vb.net datagridview

我正在导入一个excel文件,并且在此excel中的一栏中,我们将其命名为CodeName,其可能值为A01,A02,B01,B02。这些是唯一可能的值

是否有可能在datagridview中读取行的内容,并有一个条件,我只能拥有A01,A02,B01或B02?

目前我在想;

 'READING every row TESTING
        For Each row As DataGridViewRow In DataGridView1.Rows
            If -----Then
             'MsgBox("content has wrong value")
            End If
        Next

2 个答案:

答案 0 :(得分:1)

正如评论中所说,最好在DataGridView语句中填充SELECT语句,该语句仅使用CodeName = YourValues来填充行

尽管回答了您可能会在将来对您有所帮助的问题,我会做这样的事情:

        For Each dgvRow As DataGridViewRow In DataGridView1.Rows
            If dgvRow.Cells("CodeName").Value Is DBNull.Value Then
                MsgBox("Wrong Value")
            Else
                Select Case dgvRow.Cells("CodeName").Value
                    Case "A01", "A02", "B01", "B02"
                        'Do nothing
                    Case Else
                        MsgBox("Wrong Value")
                    End Select
            End If
        Next

我首先进行NULL检查,然后使用SELECT CASE语句,因为在将某些内容与多个值进行比较时,我觉得它比ElseIf的列表更整齐,但是这完全取决于您。

您可能不希望使用msgBox,但是如果有很多行不包含您要查找的值,这似乎会很烦人。

也许只需设置dgvRow.Cells("CodeName").Style.BackColor = Color.Red或其他内容即可,这样您就可以看到错误的值,而不必每次都单击OK。

答案 1 :(得分:0)

另一种方法...定义有效值的数组,然后对要测试的每个值使用数组的.Contains方法。

    Dim arr() As String = {"A01", "A02", "B01", "B02"}
    For Each row As DataGridViewRow In DataGridView1.Rows
        If Not arr.Contains(row.Cells("CodeName").ToString) Then
            MsgBox("Wrong")
        End If
    Next