datagridview值已经存在vb

时间:2015-10-11 12:37:53

标签: vb.net datagridview

这是我的代码,用于检查dgvorders中是否已存在一个值(来自dgvlist),我的问题是仅显示dgvlist的第一个选择行的错误消息,其余的仍然添加。

For Each row As DataGridViewRow In dgvOrders.Rows
        For i = 0 To dgvOrders.Rows.Count - 1
            If row.Cells(0).Value = dgvList.SelectedRows(i).Cells(0).Value Then
                MsgBox("item already listed!", MsgBoxStyle.Critical)
            Else : dgvOrders.Rows.Add(v, w, x, y, z)

            End If
            Exit Sub
            Exit For
        Next 
    Next

2 个答案:

答案 0 :(得分:0)

因为在If语句之后你正在使用End sub所以一旦比较了第一条记录,它就会从整个sub中出来。

答案 1 :(得分:0)

我建议你依次关注每个项目。您只需要一个For Each ... Next循环(除非您还想遍历列)。

接下来获取值以测试变量ValueFromdgvList。它应声明为与预期值匹配的数字或字符串。我不知道下面的代码中是否有正确的语法或正确的值。您应该在代码中放置一个断点并逐步执行,以便在开始比较之前检查您是否具有预期值。

最后要添加一行,您需要将值设置为数组。更好的方法是定义一个新的DataGridViewRow并将值添加到其中。最后将它添加到DataGridView。但我会离开那。

    'change this as needed
    Dim ValueFromdgvList As String = dgvList.SelectedRows(0).Cells(0).Value
    Debug.Print(ValueFromdgvList)

    Dim haveMatch As Boolean
    For Each row As DataGridViewRow In dgvOrders.Rows
        If row.Cells(0).Value = ValueFromdgvList Then
            haveMatch = True
            Exit For
        End If
    Next

    If haveMatch Then
        MsgBox("item already listed!", MsgBoxStyle.Critical)
    Else
        Dim ValuesArray() As Object = {v, w, x, y, z}
        dgvOrders.Rows.Add(ValuesArray)
    End If

我们正在使用haveMatch,因为在检查完所有行之前,我们不想添加新行。