Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Языки программирования

Важная информация

Языки программирования Изучаем С++, Sql, php, Lua, Python

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.03.2010, 18:41   #1
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию C# DataGridView.VirtualMode

При написании одной програмулины возникла проблема с выводом данных, точнее их отображением:

Есть DataTable в котором хранятся данные скажем 100*1000, эти данные я вывожу в DataGridView, но при обычной привязке:
PHP код:
dataGridView.DataSource dataTable
получается лажа, так как перерисовка контрола происходит очень медленно.

Читая msdn узнал, что большое количество данных надо отображать в виртуальном режиме, попытался сделать и заглох на самом простом примере.
Данные все так же отображаются с медленной перерисовкий.
Как с этим бороться?
__________________
Konctantin вне форума   Ответить с цитированием
Старый 15.03.2010, 15:53   #2
SNICKERS
Гость
 
Сообщений: n/a
По умолчанию

Пару месяцев назад тоже столкнулся с такой проблемой.
Виртуальный режим предлагался на многих форумах, но реализовать не получилось.
Как вариант предлагают определять номера записей, которые пользователь должен увидеть в DGW и извлекать из базы именно их.
Если не ошибаюсь было у DGW свойство возвращающее диапазон видимых строк.
Могу посоветовать статью: "DataGridView. Новый контрол в составе Framework 2.0" (прям так и ввести в поисковик гугл). Автор статьи: Щербунов Нейл
  Ответить с цитированием
Старый 15.03.2010, 17:04   #3
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

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

кстати скачал один пример, готовой реализации, там было на вывод 255*3 работало быстро, увеличил до 65000*100 глюков не было, но пример был реализован коряво, так как была задействована сторонняя полоса прокрутки, и вывод табличной части происходил именно от действия над этой полосой прокрутки.

ЗЫ. Кончиный это контрол, мелкософтовцы превратили удобство и легкость разработки в непонятно что, ввев этот контрол как "загадку природы".
__________________

Последний раз редактировалось Konctantin; 15.03.2010 в 18:45.
Konctantin вне форума   Ответить с цитированием
Старый 15.03.2010, 18:51   #4
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Спасибо за идею. Переделал ListView в своем пакет вьюэре на использование этой фичи. Теперь работает быстро даже при большом количестве пакетов
TOM_RUS вне форума   Ответить с цитированием
Старый 15.03.2010, 18:58   #5
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

а пример кода можно? на вывод данных.
__________________
Konctantin вне форума   Ответить с цитированием
Старый 16.03.2010, 12:23   #6
SNICKERS
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от TOM_RUS Посмотреть сообщение
Спасибо за идею. Переделал ListView в своем пакет вьюэре на использование этой фичи. Теперь работает быстро даже при большом количестве пакетов
Присоединяюсь. Хотелось бы "добить" это виртуальный режим. Просим пример кода.
  Ответить с цитированием
Старый 16.03.2010, 12:24   #7
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

http://code.google.com/p/mywowtools/source/detail?r=238
http://code.google.com/p/mywowtools/source/detail?r=239
Все взято с MSDN.
TOM_RUS вне форума   Ответить с цитированием
Старый 18.03.2010, 10:42   #8
Konctantin
RuDB Dev
 
Аватар для Konctantin
 
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
Konctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всемKonctantin Это имя известно всем
По умолчанию

так вот проблема в том, что к ListView я уже давненько сделал через виртуальный режим, а вот с DataGridView уже проблемы, хотя делал вроде все аналогично. (сама перерисовка контрола при прокрутке скрола, виртуальный режим работает, но перерисовка медленная, кстати, когда убирал все прорисовки (гриды), тогда работает нормально, так только указываю отображать гриды (линии) опять тормоза)
хм... надо читать литературу...
__________________
Konctantin вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 06:41. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot