vb.net - 避免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
任何建议或帮助我知道我必须验证但我不知道将它放在哪里,谢谢
解决方案
最简单的方法是让两个网格都使用一个数据源(数据表)作为它们的信息,并在数据表中有一个布尔列,如“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 并不重要
推荐阅读
- laravel - 错误非法长度修饰符在 s[np]printf Laravel 中指定了 'f'
- php - 查找一个多维数组中的所有元素是否存在于另一个中(使用多维数组作为大海捞针)
- post - 如何在 esp32 中使用 shlib(nghttp2) 发送一大块数据?
- python - 在句子级别找到每个单词的频率
- c - 在 C 中生成大小为 10^6 的数组
- javascript - 是否可以不使用 Pine 脚本为交易视图编码?
- material-ui - MUI V5 - MakeStyles 样式被覆盖
- flutter - 有什么方法可以强类型地使用 Navigator?
- python - groupby 一列以获取另一列中的最小值和对应值
- python - 如何使用 re.split() 分割两个字符的实例?