如何使用 C# 在 DataGridView 中制作一个唯一的列?

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

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

我需要像 sql 那样创建一个独特的列。

有没有什么方法可以通过属性 window 或 programmaticalLy 来做到这一点?

我想将其添加为评论,但我没有权限。只是给你一个提示,如果你正在使用列表或类似的东西填充你的 dgv,你可以使用 "distinct" 函数并试一试。如果您正在阅读一些文本文件,您需要编写一些代码来删除重复项。

要防止用户添加新行,您可以从属性中禁用它 window 并将 allowusertoadd 从 true 设置为 false。

如果您有关于重复行或数据的问题,您必须先检查您的数据源。

关于创建唯一列,您可以通过属性 window 和编程方式进行设置。

从属性 window 添加列,您可以 select 列属性并添加或编辑所需的列,

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

这不是在 DataGridView 中(直接)完成的。

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

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

然后您可以按照 here.

中的说明向此 table 的列添加约束

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

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

希望这对您有所帮助...