1

Тема: Vbs + WSO Загрузка большого количества данных в ListView

Собственно сабж. Использую WSO, заполняю ListView результатом выполнения SQL запроса. Получаю 200к строк. Вопрос: как бы сделать так, чтобы новые строки запрашивались при пролистывании, либо блоками. Совсем не круто ждать пока все 200000 строк появятся.

Автоматизирую торговлю. Не 1С

2 (изменено: Rumata, 2013-10-10 10:29:55)

Re: Vbs + WSO Загрузка большого количества данных в ListView

Делайте выборку данных порциями заданного размера (например, три 3-4-5 размеров видимой области ListView). При скроллинге сверху вниз, по мере приближения к концу текущего списка (например 75% и более от последней порции), запрашивайте новую порцию и добавляйте ее в конец существующего списка данных. Соответственно повесьте обработчик на событие скроллинг.

Вы проверяли и уверены, что именно запрос работает медленно, а не отрисовка полученных данных?

( 2 * b ) || ! ( 2 * b )

3

Re: Vbs + WSO Загрузка большого количества данных в ListView

Отрисовка выключена, во время выполнения запроса. Есть команда BeginUpdate() и EndUpdate() для отображения результатов заполнения по завершению. А вот события по скролингу разве существует?

Автоматизирую торговлю. Не 1С

4

Re: Vbs + WSO Загрузка большого количества данных в ListView

То есть Вы замерили время исполнения запроса и убедились, что оно сущетсвенно велико. А отрисовка - быстрая операция. Так?

события по скролингу разве существует?

Если реализовано в данной библиотеке

( 2 * b ) || ! ( 2 * b )

5

Re: Vbs + WSO Загрузка большого количества данных в ListView

да. отрисовывает все сразу, а вот запрашивает все долго. Нет не реализовано в данной библиотеке, поэтому и спрашиваю, возможно ли както замутить получение данных по частям чтоли. Запрос может получать не все 200к, а только первые 1000 например, потом еще 1000 и т.д. только как поймать пользователя за проматыванием?

Автоматизирую торговлю. Не 1С

6

Re: Vbs + WSO Загрузка большого количества данных в ListView

Пока что ничего лучше, чем поставить кнопку "Получить следующие 1000 записей" не придумал.

Автоматизирую торговлю. Не 1С

7

Re: Vbs + WSO Загрузка большого количества данных в ListView

Есть в  WSO такая штука:
Событие для ListView
OnData  ( [in] IDispatch *  Sender, 
  [in] IDispatch *  Item   
)   
Событие возникает когда компоненту требуется информация об элементе в виртуальном режиме.
Аргументы:
Sender  объект который вызвал обработчик события 
Item  элемент для которого запрашивается информация, исходя из значения его свойства Index можно задать его текст и изображение

Не могу понять, как это работает. Пробую задать 100 строк для отображения и по событию OnData подгружать еще 100. В результате получаю ListView пустой.

Автоматизирую торговлю. Не 1С