【问题标题】:How to make a unique column in datagridview with c#?如何使用 c# 在 datagridview 中创建唯一列?
【发布时间】:2015-06-10 05:57:14
【问题描述】:

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

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

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

【问题讨论】:

  • DGV使用什么数据源?是DataTable,还是任何基于IList 的集合?
  • 没有数据源只是根据一些用户的输入以编程方式添加行
  • 在添加行之前,循环所有现有行并检查是否存在重复数据。
  • @Fabio 这不会影响性能吗?如果 dgv 包含 100k 行或类似的内容怎么办?
  • 如果您的datagridview 需要包含 100k 行,那么这是您的应用程序设计问题

标签: c# datagridview unique


【解决方案1】:

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

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

希望这会有所帮助...

【讨论】:

  • 谢谢,您能否编写代码来编辑该行(如果存在)并更新它的值吗?
  • @Mohamed Ahmed 这个怎么样?
  • 谢谢你,作为一个魅力 :) 只需要更新整个现有行而不仅仅是唯一的列单元格,所以我需要 else close 中的代码来更新整个行而不仅仅是 1 个单元格你能编辑吗?^_^
  • @Mohamed Ahmed 我在这里指定更新cell2cell3 列值,同样只需更新gridview 行的所有可用列。
【解决方案2】:

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

【讨论】:

  • 没有数据源只是根据某些用户的输入以编程方式添加行。谢谢
【解决方案3】:

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

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

关于制作独特的列,您可以从属性窗口和以编程方式设置它。

从属性窗口添加列,您可以选择列属性并添加或编辑您想要的列,

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

【讨论】:

    【解决方案4】:

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

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

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

    然后您可以按照here 的描述向该表的列添加约束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2010-11-19
      • 2011-09-07
      相关资源
      最近更新 更多