JM2251 Ответов: 3

Медленная загрузка Datagrid


У меня есть Datagrid, и в нем может быть 1000 строк. На основе фильтра (выпадающий список), элемент управления DataGrid заполняется количество строк. Таким образом, загрузка количества записей занимает некоторое время, пока мой пользовательский интерфейс не станет безответственным.


Мой вопрос таков
1)Является ли свойство "видимость" остановкой элемента управления для рисования? Если нет, то какое свойство можно использовать?
2)не могли бы Вы предложить какой-нибудь подход для этого?

Что я уже пробовал:

Я попытался использовать свойство "видимость" для строк, чтобы datagrid мог показывать только видимые те строки, которые находятся в видимой клиентской области. Но этот трюк не сработал.

Gerry Schmitz

Не видя кода, трудно предположить. Как пить из чашки или сосать соломинку; оба работают, но с разной эффективностью. И 1000 - это не "много"; зависит от того, как вы это делаете. Подразумевается, что нет никаких электронных таблиц Excel "1000 строк", даже если предел никогда не был меньше 64 000 строк. И никто не прокручивает одну строку за раз с более чем несколькими строками: одна "страница".

3 Ответов

Рейтинг:
1

OriginalGriff

В принципе, не делайте этого.

Что вы ожидаете от пользователя с 1000 строками данных? Как вы думаете, они найдут ряд, который их интересует?

Не просто сбрасывайте данные на пользователя: это затрудняет использование вашего приложения, а это означает, что пользователи не будут его использовать - они найдут альтернативу с лучшим дизайном и будут использовать ее вместо этого.

Сведите данные к минимуму: это ускоряет отображение и делает пользовательский интерфейс более доступным. Страничные данные, фильтруйте их, ищите: помогите пользователю делать свою работу, а не сбрасывать на него данные и ожидать, что он сделает вашу!


Рейтинг:
1

Dave Kreskowiak

Видимость здесь вам не поможет.

Привязываете ли вы сетку к данным или сами добавляете в нее каждую строку набора данных? Позднее займет больше времени.

Но главная проблема заключается в том, что вы добавляете много данных в сетку. Если пользователь прокручивает тысячу записей, это просто разозлит пользователей. Таким образом, вы должны ограничить данные, которые вы получаете. Вместо того чтобы возвращать как можно больше строк, измените запрос выбора базы данных, чтобы вместо него возвращались верхние 100 строк. Вы можете сообщить пользователю, что возвращаемый набор данных слишком велик, если проверите количество строк, возвращаемых запросом, и включите/отключите такое уведомление пользовательского интерфейса для пользователя.


JM2251

Спасибо за ваш ответ.
Да, я использую itemsource of Datagrid для элементов. Я не хочу давать данные в слотах. Я хочу, чтобы дисплей был без слотов.

Теперь запросы таковы:
1) если видимость не останавливает управление для рисования. Есть ли какое-нибудь свойство делать то же самое?
2) Можете ли вы предоставить любую ссылку для виртуализации данных, чтобы я мог показывать только номера строк, которые видны, и загружать другую строку, когда пользователь scolls.

Рейтинг:
1

Perić Željko

Попробуйте эту ссылку,
как быстро заполнить datagridview тысячами записей ?[^]
где же и мое решение такой проблемы.

Всего наилучшего,
Желько Перич


Richard MacCutchan

И все равно это очень плохая идея.