后台:我有执行的任意查询,然后我获取数据 - 记录数组=对象数组。我想使用DataGrid查看它们。
问题:感觉应用程序没有足够的响应能力。从查询到查询的切换很慢,切换大约需要1-2秒,而且只能显示约20条记录!我想立即进行切换,点击“下一个查询”,您就可以立即获得结果。
代码:
// defining colums for a grid
grid.Columns.Clear();
int i = 0;
foreach (var db_col in query.Names) // names of the colums
{
var col = new DataGridTextColumn();
col.Header = db_col;
col.Binding = new Binding(String.Format("Data[{0}]",i));
grid.Columns.Add(col);
++i;
}
// adding rows to grid -- the culprit
grid.Items.Clear();
foreach (var db_row in query.Rows)
{
var row = new DataGridRow();
row.Item = db_row;
grid.Items.Add(row);
}
我无法看到其他方式 - 我遍历行并逐个添加它们。行已经在内存中,此时没有数据库通信。我怎么知道这个(添加行)是减速的原因?非常简单,我对此进行评论,应用程序变得很快。
我的盒子:Windows 7旗舰版32位,CPU Intel Core2Duo 2.66GHz,2GB RAM。
答案 0 :(得分:1)
您是否尝试过调用BeginInit和EndInit以在添加每个项目后停止更新网格?
grid.BeginInit();
grid.Items.Clear();
foreach (var db_row in query.Rows)
{
var row = new DataGridRow();
row.Item = db_row;
grid.Items.Add(row);
}
grid.EndInit();