Фон: У меня есть произвольный запрос, который выполняется, а затем я получаю данные - массив записей = массивы объектов. Я хотел бы просмотреть их с помощью 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);
}
Я не могу понять, что я могу по-другому - я перебираю строки и добавляю их одну за другой. Строки уже находятся в памяти, в данный момент связь с базой данных отсутствует. Откуда я знаю, что это (добавление строк) является причиной замедления? Я просто комментирую это, и приложение становится быстрым.
Мой ящик: 32-разрядная ОС Windows 7 Ultimate, процессор Intel Core2Duo 2,66 ГГц, 2 ГБ ОЗУ.