繁体   English   中英

DataGridView在TabControl中从数据表中丢失一行

[英]DataGridView loses one row from Datatable in TabControl

我有一个应用程序,该应用程序使用坐在TabPageDataTable上的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM