繁体   English   中英

如何使用C#在datagridview中创建唯一列?

[英]How to make a unique column in datagridview with c#?

添加行时如何防止在datagridview中重复行?

我需要像sql一样创建唯一列。

有什么办法可以通过属性窗口或programmaticalLy做到这一点?

我想将其添加为评论,但我没有特权。 只是为了给您一个提示,如果您正在使用列表或类似内容填充dgv,可以使用“ distinct”函数并尝试一下。 如果您正在读取一些文本文件,则需要编写一些代码来删除重复项。

为了防止用户添加新行,您可以在属性窗口中将其禁用,并将allowusertoadd从true设置为false。

如果您对重复的行或数据有疑问,则必须首先检查数据源。

关于创建唯一列,您可以在属性窗口中以编程方式进行设置。

从属性窗口添加列,您可以选择列属性,然后添加或编辑所需的列,

您可以以编程方式键入以下语法:datagridview1.columns.add(“ Column1”);等

不能(直接)在DataGridView中完成此操作。

您最可能会通过.net数据绑定(一个BindingSource)将DataGridView绑定到DataTable之类的DataSource。 如果不是,请立即将一个DataSet添加到您的项目中,并在其中创建一个新的DataTable。

该(DataTable)为您提供了一个内存中的数据表,可以用您喜欢的任何方式(从数据库加载,以编程方式插入)填充数据。

然后,您可以按此处所述向该表的列添加约束。

您可以在添加新的唯一列之前检查现有的唯一列值,例如,

    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方法中检查唯一值。

希望这可以帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM