Datagridview 检查更改并插入记录

问题描述 投票:0回答:2

我有一个从 SQL Server 数据库加载的 datagridview,其中包含可编辑列。我想检查用户是否更改了 datagridview 中的数据,然后我可以将数据保存回数据库,如果用户没有更改任何内容,则不会将数据保存到数据库。我不想更新原始记录上的数据,在 datagridview 更改后,它应该将数据插入回数据库。像主模板和用户模板之类的东西。

c# asp.net sql-server datagridview
2个回答
2
投票

DataGridViewCell 不跟踪更改。如果您需要知道仅一个单元格的值已更改,请使用 CellValueChanged 事件并在那里执行您的操作。如果您需要知道哪些单元格已被修改,以便您可以枚举它们并执行必要的操作,请尝试以下操作:

HashSet<DataGridViewCell> changedCells = new HashSet<DataGridViewCell>();
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    DataGridView dgv = sender as DataGridView;
    if (!changedCells.Contains(dgv[e.ColumnIndex, e.RowIndex]))
    {
        changedCells.Add(dgv[e.ColumnIndex, e.RowIndex]);
    }
}

不要忘记挂钩 DataGridView 的 CellValueChanged 事件。当您需要更改的单元格列表时,请执行以下操作:

foreach (DataGridViewCell cell in changedCells)
  {
     // Your work here
  }

这仅适用于 UI 级别。如果您的数据也被代码更改,您将需要不同的方法。

参见 Nikola Markovinović 对问题的回答 检查 gridview 单元格中的值是否已编辑的条件?


0
投票

我认为你可以使用asp.net网格的

OnRowUpdating="GridViewUpdateEventHandler"

© www.soinside.com 2019 - 2024. All rights reserved.