c# - DataGridView 中没有重复项

标签 c# datagridview rows multiple-columns cells

我正在使用 C# 在 DataGridView 中显示一些数据,我希望它不允许您添加重复的键。现在,我的 DataGridview 非常简单,只有 2 列。一个称为“键”,另一个称为“值”。我想要的是当用户编辑或向 DataGridView 添加新条目时,它检查是否已经存在重复项并取消新行的编辑/创建。这是我当前的代码:

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        if (row.Cells[0].Value.Equals(dataGridView1.Rows[e.RowIndex].Cells[0].Value))
        {
            dataGridView1.Rows.Remove(dataGridView1.Rows[e.RowIndex]);
            break;
        }
    }

    refresh();
}

它根本不起作用...有人可以告诉我我应该怎么做吗?...谢谢!

编辑:我在 dataGridView1.Rows.Remove() 调用中也遇到了这个错误 -

Operation is not valid because it results in a reentrant call to the  SetCurrentCellAddressCore function.

编辑:

DataGridView 看起来像这样

Key     | Value 
----------------
blah    | something 
somekey | somevalue

最佳答案

这可能是您的 foreach 循环不允许删除行。

尝试这样的事情:

private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
  for (int i = 0; i < DataGridView1.Rows.Count; i++) {
    DataGridViewRow row = DataGridView1.Rows[i];
    if (row.Cells[0].Value == DataGridView1.Rows[e.RowIndex].Cells[0].Value) {
      DataGridView1.Rows.RemoveAt(e.RowIndex);
      DataGridView1.FirstDisplayedScrollingRowIndex = i;
      return;
    }
  }
}

不过,我不允许行编辑,所以我可能是错的。

编辑:只是一个快速编辑。我将 FirstDisplayedScrollingRowIndex 设置为 e.RowIndex,但该行会被删除!

关于c# - DataGridView 中没有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815307/

相关文章:

sql - 在 SQL Server 中将行数据转换为列

jquery - 使用 CSS 和 jQuery 将高度更改为奇数行

c# - 使用 Reactive Extension 处理一批请求

c# - 解析网页中的超链接

javascript - 在模式窗口 MVC4 上显示下拉列表

php - 回显 id=$id 的行数

c# - 将 ObservableCollection<child> 传递给采用 ObservableCollection<parent> 的函数

c# - 使用SAME Textbox在dataGridView中搜索和插入数据

c# - datagridview字体颜色+ mysql

c# - 是否可以使用 SQL 查询搜索 DataGridView 或 DataTable