1

我有一个小问题。我有一个定期更改的 MySQL 表模式(即列及其类型)。由于这个要求,我将我的 ORM 编程为以 DataTable 的形式而不是固定的可序列化类型来存储它。

我现在有兴趣在窗口中显示此表。准确地说,它将绑定到一个 GridView 对象(Telerik 库中的 RadGridView 类型。我使用以下代码绑定了表格:

DataTable dt = GetMyTable();
radGridView.ItemsSource = dt.DefaultView;

这工作正常。但是,如果我要使用以下代码更新此表,则该过程非常缓慢:

dt.BeginLoadData();
for (object[] new_row in new_rows) {
    dt.Rows.Add(new_row);
}
dt.EndLoadData();
dt.AcceptChanges();

我知道 DataTable 在更新时会转储大量事件,但它们应该被 BeginLoadData() 调用关闭 - 至少在理论上是这样。

我还尝试使用名为 BindingSource 的适配器,其中记录了本页中记录的步骤

这确实加快了速度,但仍然不够高效。

我的目标是使用我的 DataTable 进行批量加载,每当从线程向其中添加一批新行时,GridView 也会更新以显示新行。显然,我想尽可能高效地做到这一点。

有什么输入吗?

谢谢。

4

0 回答 0