![]() |
|
Модераторы: gambit, Partizan |
![]()
|
|
| N1ko |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 30.12.2007 Где: Киев Репутация: нет Всего: нет |
У меня есть DataGridView и DataTable. Мне нужно вытащить допустим 100 строк из DataTable начиная с 200 по 299 и вставить их в DataGridView. Это конечно можно делать каждый раз создавая в цикле колонки для DataGridView, добавляя строки и заполняя их. Но можно ли это сделать как то проще. Например через BindingSource?
Это сообщение отредактировал(а) N1ko - 7.5.2010, 12:35 |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
самое простое и самое, как не парадоксально, кошерное - динамический SQL запрос к БД. Ведь есть же прекрасная инструкция TOP у одних СУБД или LIMIT у других (см. документацию к СУБД)!!!
|
|||
|
||||
| N1ko |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 30.12.2007 Где: Киев Репутация: нет Всего: нет |
Я как раз сейчас реализую Paging, и именно для этих целей мне пригодится данная операция.(нужно выбирать элементы с такого то индекса до такого) Проблема состоит в том, что в DataTable у меня находятся данные, выбраные запросом из СУБД. Я бы вставил конструкцию LIMIT в сам запрос, но он у меня довольно долго выполняется. Секунд 7. Что не приемлимо для реализации Paging. (ведь ждать такое время для того что бы просто перейти на следующую страничку будет немног глуповато) Соответственно мне нужно работать непосредственно с DataTable. А как выполнить идентичную выборку данных в нём посредством BindingSource я пока не нашёл. Надеюсь я правильно понял Вашу мысль и ясно изложил свою. =)
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
Это для 100 кортежей? А сколько атрибутов в кортеже и есть ли среди атрибутов "тяжелые", к примеру бинарные? ы! DataTable.Select(фильтр) - возвращается массив строк удовлетворяющий фильтру. Еще есть смысл посмотреть в сторону DataView. |
|||
|
||||
| N1ko |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 30.12.2007 Где: Киев Репутация: нет Всего: нет |
Да не. База весит порядка 10 Гб, запрос довольно сложный. По этому и 7 секунд. По поводу фильтра: я пробовал найти какие операции он поддерживает, но сколько не рылся, чего то похожего на Lim не нашёл. Допускаю, что где то не досмотрел. Это сообщение отредактировал(а) N1ko - 7.5.2010, 15:17 |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
в данном случае думаю нужно задавать интервал по ключевому полю, типа id > 100 and id < 200. Но меня гложат ряд сомнений, работа с DataTable будет быстрее динамического запроса. Попробуйте возвращать не 100, а 50 строк. Тем паче проблема может быть в самом запросе. К примеру - сначала сортировка данных в связной таблице потом выборка. Да все что угодно. |
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
| N1ko |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 30.12.2007 Где: Киев Репутация: нет Всего: нет |
А можно более конкретно по поводу моей задачи(про Filter)? Я как ни пробовал, через Filter строки вытащить не получалось по их индексу
|
|||
|
||||
| diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 16 Всего: 142 |
По индексу вроде не получится, но кто мешает добавить в таблицу ещё один столбец и вписать в него индексы?
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |