|
Языки программирования Изучаем С++, Sql, php, Lua, Python |
|
Опции темы | Поиск в этой теме | Опции просмотра |
07.03.2010, 18:41 | #1 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
C# DataGridView.VirtualMode
При написании одной програмулины возникла проблема с выводом данных, точнее их отображением:
Есть DataTable в котором хранятся данные скажем 100*1000, эти данные я вывожу в DataGridView, но при обычной привязке: PHP код:
Читая msdn узнал, что большое количество данных надо отображать в виртуальном режиме, попытался сделать и заглох на самом простом примере. Данные все так же отображаются с медленной перерисовкий. Как с этим бороться? |
15.03.2010, 15:53 | #2 |
Гость
Сообщений: n/a
|
Пару месяцев назад тоже столкнулся с такой проблемой.
Виртуальный режим предлагался на многих форумах, но реализовать не получилось. Как вариант предлагают определять номера записей, которые пользователь должен увидеть в DGW и извлекать из базы именно их. Если не ошибаюсь было у DGW свойство возвращающее диапазон видимых строк. Могу посоветовать статью: "DataGridView. Новый контрол в составе Framework 2.0" (прям так и ввести в поисковик гугл). Автор статьи: Щербунов Нейл |
15.03.2010, 17:04 | #3 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
Я это уже пробовал, но как раз динамически выводить только видимую часть данных не получается, хотя делал все как надо. Когда дебажил получается, что данные подтягиваются и удаляются, но не так как надо а с запаздыванием на 20 ячеек, но по сути, это не так уж много, и все равно глюки с перерисовкой.
кстати скачал один пример, готовой реализации, там было на вывод 255*3 работало быстро, увеличил до 65000*100 глюков не было, но пример был реализован коряво, так как была задействована сторонняя полоса прокрутки, и вывод табличной части происходил именно от действия над этой полосой прокрутки. ЗЫ. Кончиный это контрол, мелкософтовцы превратили удобство и легкость разработки в непонятно что, ввев этот контрол как "загадку природы". Последний раз редактировалось Konctantin; 15.03.2010 в 18:45. |
15.03.2010, 18:51 | #4 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Спасибо за идею. Переделал ListView в своем пакет вьюэре на использование этой фичи. Теперь работает быстро даже при большом количестве пакетов
|
16.03.2010, 12:23 | #6 |
Гость
Сообщений: n/a
|
|
16.03.2010, 12:24 | #7 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
|
18.03.2010, 10:42 | #8 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
так вот проблема в том, что к ListView я уже давненько сделал через виртуальный режим, а вот с DataGridView уже проблемы, хотя делал вроде все аналогично. (сама перерисовка контрола при прокрутке скрола, виртуальный режим работает, но перерисовка медленная, кстати, когда убирал все прорисовки (гриды), тогда работает нормально, так только указываю отображать гриды (линии) опять тормоза)
хм... надо читать литературу... |