防止在datagridview中重复插入

时间:2014-07-03 11:44:14

标签: vb.net

我正在尝试检查从发件人对象收到的项目编号;如果项目编号已存在,请不要让用户输入。

下面的代码没有达到这个目的,但没有给出任何错误。

Public Sub ClickFunction1(ByVal sender As Object, ByVal e As EventArgs)
        Dim itemNo As Integer
        itemNo = sender.Name.Substring(3, sender.name.Length - 3)


        For Each row As DataGridViewRow In ImsGrid1.Rows
            If row.Cells(4).Value = itemNo Then
                MsgBox(row.Cells(4).Value)
                Exit Sub
            Else
                Dim str As String = "select MedicineName,SellPrice,ItemNo,QtyAvailable from Items where ItemNo = '" & itemNo & "' "
                Dim da As New SqlDataAdapter(str, con)
                Dim dt As New DataTable
                da.Fill(dt)
                Dim total As Double = dt.Rows.Item(0).Item(1)
                ImsGrid1.Rows.Add(dt.Rows.Item(0).Item(0), dt.Rows.Item(0).Item(1), "1", total, dt.Rows.Item(0).Item(2), dt.Rows.Item(0).Item(3) - 1)

            End If
        Next



    End Sub

1 个答案:

答案 0 :(得分:0)

需要考虑两个概念:

  1. 永远不要从您的UI验证您的数据 - 使用基础业务对象。如果您必须执行Cells(4)之类的操作,则应重新考虑您的方法。

  2. 首先验证数据中的重复项(可选的内存中验证),然后在DB中也有一个唯一约束,它会在保存时自动验证您的数据(强制服务器端验证)。不要手动验证数据库。这样做没有多大意义,因为可以在验证和实际保存之间添加数据。

  3. 正如@Plutonix所建议的那样,总是使用Option Strict On,它可能会增加你的代码(所以你可能会试图让它保持关闭),但这实际上有助于在代码复杂性增加时更好地理解,并且是时候了重构。