Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 检查datagridview的值_Vb.net_Datagridview - Fatal编程技术网

Vb.net 检查datagridview的值

Vb.net 检查datagridview的值,vb.net,datagridview,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 -----T

我正在导入一个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

正如它在注释中所说的,最好用一个只带CodeName=yourValue的行的
SELECT
语句填充
DataGridView

虽然为了回答你的问题,这可能会在将来对你有所帮助,我还是会这样做:

        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(“code name”).Style.BackColor=Color.Red
或其他设置,这样您就可以看到错误的值,而不必每次都单击“确定”。

另一种方法。。。定义一个有效值数组,然后对要测试的每个值使用数组的.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

您使用的是VB.NET还是Excel VBA?这些是完全不同的应用,请在您的问题和标签中澄清。另外,我非常确定有很多教程展示了如何填充DataGridView。试着使用其中一个,然后带着真实的代码、错误信息和问题返回。也看看。如果它有错误的值,你打算怎么做…删除它?vb.net。导入excel文件不是当前的主要问题。我正在将excel文件导入datagridview;但是我的问题是关于阅读datagridview中填写的内容,以便它只能包含A/B 01或02。。我认为读取DGV单元格中的内容要比导入excel文件和弹出的msgbox显示错误的值///以及是否有错误的值之前容易得多;只是一个弹出消息,例如“MsgBox(“错误值”),您应该能够检查
如果row.Cells(“CodeName”)=“A01”或lse…{为每个值重复}
。但是如果您使用OleDb将数据加载到数据源中,您可以在SELECT语句中处理此问题,并且只将那些具有CodeName=的行引入这些值。是的,我正在通过OleDb连接将excel文件导入DGV。好的,我将尝试您的建议;谢谢您,如果您希望我删除此答案,以便Charles可以如果有500行数据呢?在这500行数据中,只有6行有A01、A02、B01、B02。你真的想在那里设置并点击OK按钮494次吗?我至少会在那里放一个行过滤器,只显示我想要的数据,而不是写一个messagebox。”“代码名”或新单元格“错误值”并可能将其点亮。问题是,我们从未收到关于如何处理“错误值”行的答案。我知道我曾在他的评论中表示,出于这个原因,我没有使用msgBox,但他说“…如果它有错误值,只会弹出一条消息,例如“msgBox(“错误值”)”所以我就把它放进去了。是的,你放了,对不起。我老了一定是瞎了。@Pete请更正您的选择。它不会像写的那样工作,因为它正在寻找与“A01、A02、B01、B02”匹配的字符串,而不是单个项<代码>案例“A01”、“A02”、“B01”、“B02”