我有点问题。我有一个定期更改的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的适配器,其中记录了page
中记录的步骤这确实加快了速度,但仍然效率不高。
我的目标是使用我的DataTable批量加载,每当从一个线程添加一批新行时,GridView也会更新以显示新行。显然,我希望尽可能高效地完成这项工作。
任何输入?
感谢。