ADGV C#DataGridView-更新查询错误? [英] ADGV C# DataGridView - update query bug?

查看:72
本文介绍了ADGV C#DataGridView-更新查询错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

问题是,下面显示的过程每次都无法成功更新SQL表...这恰恰是第二个事件。 。。 .RowIndex;
DataRowView drv =(DataRowView)advancedDataGridView1.Rows [rowIdx] .DataBoundItem;
DataRow dr = drv.Row;
this.levTableAdapter.Update(dr); //奇怪,但是更新每隔第二次完成。...
}

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



编辑:
再次进入行为,我必须更新:

 第一次输入 A-noChangeSQL,事件选择 A, A在数据网格单元中。 
2nd在SQL中输入 B- A,事件在单元格中选择 A, A。
第三个在SQL中输入 C- A,事件在单元格中选择 C, C。
第四个在SQL中输入 D- C,事件在单元格中选择 C, C。
5th在SQL中输入 E- C,事件在单元格中选择 E, E。


解决方案

您确定吗,这是第二个事件吗?可能不只是保存您更改的最后一行吗?如果是时间问题或执行顺序问题(例如在处理EndEdit事件后发生行状态更新),则可以使用Form的BeginInvoke将其推迟一点,例如:

  private void advancedDataGridView1_CellEndEdit(对象发送者,DataGridViewCellEventArgs e)
{
int rowIdx = advancedDataGridView1.CurrentCell.RowIndex;
DataRowView drv =(DataRowView)advancedDataGridView1.Rows [rowIdx] .DataBoundItem;
DataRow dr = drv.Row;
BeginInvoke((动作)(()=> SaveRowChanges(dr)));
}

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


I'm trying to use auto-generated advancedDataGrid - ADGV (adgv.codeplex.com).

Problem is that the below shown procedure does not succeed with updating the SQL table every time... It is exactly every second Event raised...

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....
    }

How to debug it?, if I add another line of this.levTableAdapter.Update(dr) - it will not help either...

EDIT: Looked into behaviour again and I have to update:

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.

解决方案

Are you sure, it's every second event? Could it be it doesn't save just the last row you changed? If it is a timing issue or excecution order problem (like row state update happening after EndEdit event gets handled), you can defer it a bit, with Form's BeginInvoke, like this:

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);
}

这篇关于ADGV C#DataGridView-更新查询错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆