Низкая производительность DataGridViewRow в приложении .NET C # - PullRequest
3 голосов
/ 20 апреля 2009

Я пытаюсь выяснить поведение в приложении, которое поддерживаю. Фрагмент:

foreach (DataGridViewRow pGridRow in grdEmail.Rows)
{
    pGridRow.Cells[0].Value = chkSelectAll.Checked;
    pCount = pGridRow.Index + 1;
}

Который, по сути, пытается выделить все строки в сетке (установите флажок), когда установлен флажок выбора всех.

Когда сетка состоит из нескольких строк (сотен или около того), она прекрасно работает. Тем не менее, когда у меня есть около 5000 строк, эта вещь ползет. Команда pGridRow.Cells[0].Value = chkSelectAll.Checked занимает секунду или около того (при условии размещения Console.prints над и под ней).

Любая идея будет признательна при решении этой проблемы.

Ответы [ 4 ]

1 голос
/ 24 августа 2012

Попробуйте установить свойства:

grdEmail.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
grdEmail.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;

Поскольку кажется, что для других значений этих двух свойств DataGridView пытается изменить размер строк и столбцов, даже если вы устанавливаете только некоторые флажки в сетке.

1 голос
/ 20 апреля 2009

Одновременный вывод тысяч строк бесполезен и затрудняет пользователям поиск нужных данных. Я определенно рекомендовал бы нумерацию страниц. Ваши пользователи будут вам благодарны. (Если они специально не попросили увидеть 5000 сразу, что кажется глупым.)

0 голосов
/ 20 апреля 2009

Попробуйте изменить базовый источник данных (если есть) напрямую, а не устанавливать значение ячейки.

//assuming datasetFoo.Tables(0) is the DataSource of the DataGridView
foreach (DataRow rowFoo in datasetFoo.Tables(0) { 
        rowFoo ("Sel") = chkSelectAll.Checked; 
    } 
0 голосов
/ 20 апреля 2009

Какой смысл иметь 5000 видимых строк одновременно?

Разве это не может быть разбито на страницы?
Разве флажок не может быть отправлен по умолчанию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...