Я пишу приложение, в котором я загружаю два DataGridViews из БД. Я успешно сделал это, используя dataAdapter.Fill (DataSet), но проблема, с которой я столкнулся, заключалась в том, что данные, поступающие из БД, содержат 10 тысяч записей. Это очень медленно (слишком медленно, около 7 минут) при первом запуске. В следующий раз время будет более разумным (около 35 секунд). Поэтому я решил попробовать другой подход: загрузить двухмерные массивы с данными, а затем передать их в таблицы данных. Первоначально я думал, что это будет быстрый тест, чтобы увидеть выигрыш времени, если таковой имеется, но это оказалось сложнее, чем я думал. Вот что у меня есть:
while(dr.Read())
{
for (int l = 0; b && l <= dr.FieldCount-1; l++)
{
DataGridViewColumn column = new DataGridViewColumn();
column.CellTemplate = cellTemplate;
column.FillWeight = 1;
column.Name = dr.GetName(l);
dgv.Columns.Add(column);
}
b = false;
for (int i = 0; i <= dr.FieldCount - 1; i++ )
{
row.Add(dr.GetValue(i));
}
table.Add(row);
row = new System.Collections.ArrayList();
}
dgv.DataSource = table;
Обратите внимание, я бы создал класс для встраивания данных (член данных для каждого столбца, но столбцы могут измениться), таким образом, идея arrayList. В результате в сетке данных появляются правильные столбцы, правильные имена и правильные номера или строки, однако все строки пустые, и добавлены дополнительные столбцы, относящиеся к структуре arrayList. Что я делаю неправильно? Есть ли способ лучше? Любая помощь / обратная связь будет оценена! : -)
Спасибо
Ben