[英]DataGridView loses one row from Datatable in TabControl
我有一个应用程序,该应用程序使用坐在TabPage
和DataTable
上的DataGridView
作为数据源。 我创建DataTable
,填充行,然后在启动时将DataGridView's
数据源设置为DataTable
。 像这样
aData.Columns.Add("Description", typeof(string));
aData.Columns.Add("OID", typeof(string));
aData.Columns.Add("Value", typeof(string));
aData.Rows.Add(new object[] { "Row 1", 0, null });
aData.Rows.Add(new object[] { "Row 2", 1, null });
aData.AcceptChanges();
dgTest.DataSource = aData;
我有一个线程执行并触发一个事件,该事件将更新DataTable
值。
一切工作正常,直到您开始在TabPages
之间切换,然后DataGrid
丢失了行之一。 如果单击列标题以对行进行排序,则它将弹出。 但是在TabPages
之间切换TabPages
,它又消失了。
如果查询DataGrid,则“行”属性仅显示1行,但“ DataTable
仍显示2行。
我对为什么会发生这种情况以及如果我做错了什么感到困惑。 我在此处添加了具有相同行为的示例应用程序
您需要从UI线程调用AcceptChanges
。 在代码中进行下一个更改:
// aData.AcceptChanges(); <- change this to the code below inside your OnResult event
this.BeginInvoke(new Action(() => { aData.AcceptChanges(); }));
您的活动现在应如下所示:
void rm_OnResult(int Row, int Value)
{
DataRow[] dr;
dr = aData.Select("OID = '" + Row + "'");
dr[0]["Value"] = Value.ToString("#,###.00");
this.BeginInvoke(new Action(() => { aData.AcceptChanges(); }));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.