如何检查DataGridView中是否已存在某个值?

问题描述 投票:0回答:2

每当添加项目时,我都会尝试检查 DataGridView 中的每一行以避免重复。但我的代码只允许我检查我添加的第一个数据。

这是我的代码:

For Each row In BarcodePrintListGrid.Rows

    If Label44.Text = row.Cells("Barcode ID").Value Then
        MetroMessageBox.Show(Me, "Item Already Added", "System Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)

        Label47.Text = "None"
        Label44.Text = "None"
        Label42.Text = "None"
        Label31.Text = "None"
        Label40.Text = "0"
        TextBox1.Clear()

        Exit For

    Else
        BarcodePrintListGrid.Rows.Add(Label47.Text, Label44.Text, Label42.Text, Label31.Text, Label40.Text, 1)

        MetroMessageBox.Show(Me, "Item Added to List", "System Information", MessageBoxButtons.OK, MessageBoxIcon.Information)

        Label47.Text = "None"
        Label44.Text = "None"
        Label42.Text = "None"
        Label31.Text = "None"
        Label40.Text = "0"
        TextBox1.Clear()

        Exit For
    End If

Next
vb.net datagridview
2个回答
1
投票

您必须等到循环遍历完

DataGridView
的所有行后才能决定是否向其中添加该行。

尝试使用此代码:

 Dim test As Boolean = False
    For Each row In BarcodePrintListGrid.Rows
        If Label44.Text = row.Cells("Barcode ID").Value Then
            test=true
            Exit For
        End If
    Next

    if test=false then
            BarcodePrintListGrid.Rows.Add(Label47.Text, Label44.Text, Label42.Text, Label31.Text, Label40.Text, 1)

            MetroMessageBox.Show(Me, "Item Added to List", "System Information", MessageBoxButtons.OK, MessageBoxIcon.Information)
    else
            MetroMessageBox.Show(Me, "Item Already Added", "System Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    end if
     Label47.Text = "None"
     Label44.Text = "None"
     Label42.Text = "None"
     Label31.Text = "None"
     Label40.Text = "0"
     TextBox1.Clear()

0
投票

第一个答案中的代码帮助我完成了我正在做的工作,但万一您收到错误,因为它找不到具有您可以使用的名称的单元格: row.Cells(0).Value 按位置搜索。

© www.soinside.com 2019 - 2024. All rights reserved.