如何用c#在datagridview中创建一个唯一的列?

时间:2015-06-10 05:57:14

标签: c# datagridview unique

如何在添加行时防止重复数据网格视图中的行?

我需要在sql中创建一个唯一的列。

有没有办法通过属性窗口或programmaticalLy来做到这一点?

4 个答案:

答案 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方法中的唯一值。

希望这会有所帮助......