Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подфетчивание при прокрутке грида 
:(
    Опции темы
Dimyan
Дата 13.3.2006, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: нет
Всего: 4



Я вот никак не могу понять как в .Net можно реализовать следующие:
Например в гриде должно отобразится (выбранное по условиям выставленных фильтров из базы) 10000 строк, но скорее всего из них небудут просмотрена и 1/10 поэтому нет смысла тянуть на клиент такое кол-во строк. Подскажите пожалуйста каким образом можно подфетчивать новые строки при прокрутке грида


--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
mr.DUDA
Дата 13.3.2006, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Простейшее решение - это выводить записи постранично. Добавляем пару кнопок Next page / Prev page, по которым перезачитываем нужный кусок записей.


--------------------
user posted image
PM MAIL WWW   Вверх
Dimyan
Дата 13.3.2006, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: нет
Всего: 4



ну вариант конечно, впринципе можно такое и при скролировании грида применить. А все таки если это простейшее то какие есть более серьезные решения? smile


--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
Softaz
Дата 13.3.2006, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 4
Всего: 16



Параметр TOP

Код

SELECT TOP 5 PowerPlants.* FROM PowerPlants, States WHERE 

(States.Name = "California" Or States.Name = "Nevada") AND 

Contains(States.ID, PowerPlants.ID) ORDER BY PowerPlants.Power; 

Из отсортированного списка выбрать первые 5 записей.
По крайней мере, в MSSQL есть.


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
Dimyan
Дата 13.3.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: нет
Всего: 4



Цитата(Softaz @ 13.3.2006, 13:20)
Из отсортированного списка выбрать первые 5 записей.

хорошо, а как докачивать следующие?


--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
mr.DUDA
Дата 13.3.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Цитата(Dimyan @ 13.3.2006, 09:39 Найти цитируемый пост)
хорошо, а как докачивать следующие?

Это задачка на составление SQL-запроса ?
Тогда решается она так. Берём максимальный Id-шник загруженной в грид записи, допустим он 123, и добавляем в запрос условие:
Код
SELECT TOP 5 TableName.* FROM TableName WHERE Id > 123 ORDER BY Id ASC



--------------------
user posted image
PM MAIL WWW   Вверх
Dimyan
Дата 13.3.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: нет
Всего: 4



интересно кому на практике для отображения надо сортировка по id ?
а если я по имени например соритрую и id у меня
123 Петров
321 Иванов
111 Уланов

???

Можно конечно что то типа для получения следующих пяти

Код

SELECT first 10 PowerPlants.* FROM PowerPlants, States 
WHERE (States.Name = "California" Or States.Name = "Nevada") 
and PowerPlants.id not in (SELECT first 5 PowerPlants.id FROM PowerPlants, States 
WHERE (States.Name = "California" Or States.Name = "Nevada") ORDER BY PowerPlants.Power)
ORDER BY PowerPlants.Power; 



но вы извените меня великодушно, но это кал а не запрос...
Добавлено @ 16:13
забыл сказать
синтаксис sql FireBird smile) (это я про first)


--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
mr.DUDA
Дата 13.3.2006, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Цитата(Dimyan @ 13.3.2006, 15:12 Найти цитируемый пост)
но вы извените меня великодушно, но это кал а не запрос...

Тогда можно зная имя поля по которому сортируем ("Фамилия"), добавлять в условие квери что-то вроде " AND Фамилия > 'Петров'"...

З.Ы. в sql'е я не маньяк, так что вы уж простите великодушно...


--------------------
user posted image
PM MAIL WWW   Вверх
Dimyan
Дата 14.3.2006, 05:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: нет
Всего: 4



Цитата
в sql'е я не маньяк, так что вы уж простите великодушно...

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

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


--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
mr.DUDA
Дата 14.3.2006, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Общее время загрузки данных = времени на запрос + времени на получение данных с сервера БД

Сокращать нужно первую часть, т.к. вторая от неё зависит. Время на запрос можно уменьшить либо выставив ограничивающие условия в WHERE, либо обрезав результат TOP-ом (FIRST-ом). Может и есть какие-то другие варианты, но лично мне они неизвестны smile


--------------------
user posted image
PM MAIL WWW   Вверх
Dimyan
Дата 14.3.2006, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 441
Регистрация: 12.1.2004
Где: Новосибирск

Репутация: нет
Всего: 4



согласен
просто как то это весьма некрасиво выглядит (имхо) может просто с непривычки конечно smile
Я просто до этого серьезно C# не занимался, вот только сейчас руки дошли и до него smile
Нехотелось бы лишние подзапросы в каждый запрос (результаты которого в грид летят) подставлять, никчему они там smile думал может такие возможности в .Net както на уровне DataAdapter заложено есть



--------------------
Как хорошо ничего не делать, а потом еще немного отдохнуть :)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.