如何在添加行时防止重复数据网格视图中的行?
我需要在sql中创建一个唯一的列。
有没有办法通过属性窗口或programmaticalLy来做到这一点?
答案 0 :(得分:0)
我想将其添加为评论,但我没有这个特权。只是为了给你一个提示,如果你使用列表或类似的东西填充你的dgv你可以使用" distinct"功能并尝试一下。如果您正在阅读一些文本文件,您需要编写一些代码来删除重复项。
答案 1 :(得分:0)
为了防止用户添加新行,您可以从属性窗口中禁用它,并将allowusertoadd从true设置为false。
如果您对重复的行或数据有疑问,则必须先检查数据源。
关于创建唯一列,您可以从属性窗口以编程方式设置它。
从属性窗口添加列,您可以选择列属性并添加或编辑所需的列,
以编程方式,您可以输入以下语法: datagridview1.columns.add(" Column1");等
答案 2 :(得分:0)
这不是(直接)在DataGridView中完成的。
最有可能的是,您将通过.net数据绑定(BindingSource)将DataGridView绑定到DataTable之类的DataSource。如果没有,立即通过向项目添加DataSet并在其中创建新的DataTable来执行此操作。
这个(DataTable)为您提供了一个内存数据表,可以用您喜欢的任何方式填充数据(从数据库加载,以编程方式插入)。
然后,您可以按照here所述的方式向此表的列添加约束。
答案 3 :(得分:0)
您可以在添加新列值之前检查现有的唯一列值,例如
var rows = dataGridView1.Rows.OfType<DataGridViewRow>()
.Where(x => x.Cells["cell1"].Value == "newCellVal1")
.ToArray();
if (rows == null || rows.Length == 0)
{
//New row is unique
//Logic to add new row
}
else
{
//Row already exists with "newCellVal1"
//Update the existing value rows
rows[0].Cells["cell2"].Value = "newCellVal2"; //Coulmn "cell2" with a new value "newCellVal2"
rows[0].Cells["cell3"].Value = "newCellVal3"; //Coulmn "cell3" with a new value "newCellVal3"
}
此处,cellVal
是数据网格中的唯一列名称,newCellVal
是新行中唯一列的值。您还可以添加列组合以检查Any
方法中的唯一值。
希望这会有所帮助......