【问题标题】:ADGV C# DataGridView - update query bug?ADGV C# DataGridView - 更新查询错误?
【发布时间】:2017-10-02 01:07:06
【问题描述】:

我正在尝试使用自动生成的 advancedDataGrid - ADGV (adgv.codeplex.com)。

问题是下面显示的过程每次都无法成功更新 SQL 表...恰好是每隔一个事件引发...

private void advancedDataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        int rowIdx = advancedDataGridView1.CurrentCell.RowIndex;
        DataRowView drv = (DataRowView)advancedDataGridView1.Rows[rowIdx].DataBoundItem;
        DataRow dr = drv.Row;
        this.levTableAdapter.Update(dr); //strange, but Update is done every second time....
    }

如何调试它?,如果我添加另一行 this.levTableAdapter.Update(dr) - 它也无济于事......

编辑: 再次调查行为,我必须更新:

1st enter "A" - noChangeSQL, Event picks "A", "A" in the datagrid cell.
2nd enter "B" -  "A" in SQL, Event picks "A", "A" in cell.
3rd enter "C" -  "A" in SQL, Event picks "C", "C" in cell.
4rd enter "D" -  "C" in SQL, Event picks "C", "C" in cell.
5th enter "E" -  "C" in SQL, Event picks "E", "E" in cell.

【问题讨论】:

  • 每秒钟是什么意思?
  • 如果我第一次(第 3 次、第 5 次等)编辑单元格(引发 CellEndEdit 事件)- SQL 表单元格未更新。当我第二次(第 4 次、第 6 次等)编辑 DataGrid 单元格时,它会更新。
  • 事件是否每次都引发?当表格更新时,它是从上一次编辑中选择值还是从当前编辑中选择值?
  • 事件每次都会引发,它正在选择当前值...
  • 不得不在第一篇文章中编辑“结果”……事件有问题……

标签: c# .net datagridview sql-update


【解决方案1】:

你确定,这是每隔一个事件?难道它不只保存您更改的最后一行吗?如果是时间问题或执行顺序问题(例如处理 EndEdit 事件后发生的行状态更新),您可以使用 Form 的 BeginInvoke 将其推迟一点,如下所示:

private void advancedDataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    int rowIdx = advancedDataGridView1.CurrentCell.RowIndex;
    DataRowView drv = (DataRowView)advancedDataGridView1.Rows[rowIdx].DataBoundItem;
    DataRow dr = drv.Row;
    BeginInvoke((Action)(() => SaveRowChanges(dr)));
}

private void SaveRowChanges(DataRow dr)
{
    DataRow[] rows = { dr };
    adapter.Update(rows);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2012-07-16
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2012-02-17
    相关资源
    最近更新 更多