首页 > 解决方案 > 避免datagridview vb.net中的重复数据

问题描述

早上好,我有以下问题,如何验证该记录在我的 datagridview 中没有重复。

这是我将数据从 gridview 列表发送到 gridview 详细信息的代码

   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim rowSelected As List(Of DataGridViewRow) = New List(Of DataGridViewRow)()
    For Each row As DataGridViewRow In dgvlistarproductos.Rows
        Dim cellSelecion As DataGridViewCheckBoxCell = TryCast(row.Cells("SELECCIONAR"), DataGridViewCheckBoxCell)

        If Convert.ToBoolean(cellSelecion.Value) Then
            rowSelected.Add(row)
        End If
    Next

    For Each row As DataGridViewRow In rowSelected
        
            dgvdetalleproduc.Rows.Add(New Object() {row.Cells(1).Value, row.Cells(2).Value
                                                    })
    Next



End Sub

在此处输入图像描述

任何建议或帮助我知道我必须验证但我不知道将它放在哪里,谢谢

标签: vb.net

解决方案


最简单的方法是让两个网格都使用一个数据源(数据表)作为它们的信息,并在数据表中有一个布尔列,如“isChosen”。每个网格绑定到一个单独的绑定源或数据视图,其中一个的 [Row]Filter 设置为"[isChosen] = True",其他过滤器为 false。按钮将>>所选行设置为真,另一个按钮将其设置为假

因为只有一行,并且它不会在任何地方“移动”(它只是出现在不同的网格中,具体取决于 isChosen 的值)所以没有重复

为了证明这一点:

  • 制作一个新表格
  • 在上面放两个datagridview
  • 在上面放两个按钮
  • 将此代码放在 InitializeComponent 之后的构造函数中:
    Dim dt as New DataTable
    dt.Columns.Add("Name")
    dt.Columns.Add("IsChosen", GetType(Boolean))
    dt.Rows.Add("John", False)
    dt.Rows.Add("Mark", False)
    dt.Rows.Add("Luke", False)

    Dim bs1 = New BindingSource()
    bs1.Filter = "[IsChosen] = False"
    bs1.DataSource = dt
    dataGridView1.DataSource = bs1

    Dim bs2 = New BindingSource()
    bs2.Filter = "[IsChosen] = True"
    bs2.DataSource = dt
    dataGridView2.DataSource = bs2
  • 双击button1并输入代码DirectCast(DirectCast(dataGridView1.DataSource, BindingSource).Current, DataRowView)("IsChosen") = True
  • 双击button2并输入代码DirectCast(DirectCast(dataGridView2.DataSource, BindingSource).Current, DataRowView)("IsChosen") = False

运行应用程序,点击 dgv1 中的一个名称,然后点击 button1,它将移动到 dgv2

您还可以在网格中切换 ✅ 复选框列的状态,它将移动 - 数据表列如何变为 True/False 以将行分别移动到 dgv 2/1 并不重要


推荐阅读