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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DataGridView DataTable вытащить строки 
:(
    Опции темы
N1ko
Дата 7.5.2010, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У меня есть DataGridView и DataTable. Мне нужно вытащить допустим 100 строк из DataTable начиная с 200 по 299 и вставить их в DataGridView. Это конечно можно делать каждый раз создавая в цикле колонки для DataGridView, добавляя строки и заполняя их. Но можно ли это сделать как то проще. Например через BindingSource?

Это сообщение отредактировал(а) N1ko - 7.5.2010, 12:35
PM MAIL ICQ   Вверх
mrbrooks
Дата 7.5.2010, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



самое простое и самое, как не парадоксально, кошерное - динамический SQL запрос к БД. Ведь есть же прекрасная инструкция TOP у одних СУБД или LIMIT у других (см. документацию к СУБД)!!!
PM MAIL   Вверх
N1ko
Дата 7.5.2010, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я как раз сейчас реализую Paging, и именно для этих целей мне пригодится данная операция.(нужно выбирать элементы с такого то индекса до такого) Проблема состоит в том, что в DataTable у меня находятся данные, выбраные запросом из СУБД. Я бы вставил   конструкцию LIMIT в сам запрос, но он у меня довольно долго выполняется. Секунд 7. Что не приемлимо для реализации Paging. (ведь ждать такое время для того что бы просто перейти на следующую страничку будет немног глуповато) Соответственно мне нужно работать непосредственно с DataTable. А как выполнить идентичную выборку данных в нём посредством BindingSource я пока не нашёл. Надеюсь я правильно понял Вашу мысль и ясно изложил свою. =)
PM MAIL ICQ   Вверх
mrbrooks
Дата 7.5.2010, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Цитата(N1ko @  7.5.2010,  15:29 Найти цитируемый пост)
Секунд 7

Это для 100 кортежей? А сколько атрибутов в кортеже и есть ли среди атрибутов "тяжелые", к примеру бинарные?

Цитата(N1ko @  7.5.2010,  15:29 Найти цитируемый пост)
Что не приемлимо для реализации Paging.

ы!

Цитата(N1ko @  7.5.2010,  15:29 Найти цитируемый пост)
Соответственно мне нужно работать непосредственно с DataTable. 

DataTable.Select(фильтр) - возвращается массив строк удовлетворяющий фильтру. Еще есть смысл посмотреть в сторону DataView. 
PM MAIL   Вверх
N1ko
Дата 7.5.2010, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mrbrooks @ 7.5.2010,  14:52)
Это для 100 кортежей? А сколько атрибутов в кортеже и есть ли среди атрибутов "тяжелые", к примеру бинарные?

Да не. База весит порядка 10 Гб, запрос довольно сложный. По этому и 7 секунд. 

По поводу фильтра: я пробовал найти какие операции он поддерживает, но сколько не рылся, чего то похожего на Lim не нашёл. Допускаю, что где то не досмотрел.

Это сообщение отредактировал(а) N1ko - 7.5.2010, 15:17
PM MAIL ICQ   Вверх
mrbrooks
Дата 7.5.2010, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Цитата(N1ko @  7.5.2010,  16:16 Найти цитируемый пост)
По поводу фильтра

 в данном случае думаю нужно задавать интервал по ключевому полю, типа id > 100 and id < 200. Но меня гложат ряд сомнений, работа с DataTable будет быстрее динамического запроса. Попробуйте возвращать не 100, а 50 строк. 

Тем паче проблема может быть в самом запросе. К примеру - сначала сортировка данных в связной таблице потом выборка. Да все что угодно. 
PM MAIL   Вверх
diadiavova
Дата 11.5.2010, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Цитата(N1ko @  7.5.2010,  12:59 Найти цитируемый пост)
Например через BindingSource?

BindingSource.Filter


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
N1ko
Дата 14.5.2010, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А можно более конкретно по поводу моей задачи(про Filter)? Я как ни пробовал, через Filter строки вытащить не получалось по их индексу
PM MAIL ICQ   Вверх
diadiavova
Дата 14.5.2010, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



По индексу вроде не получится, но кто мешает добавить в таблицу ещё один столбец и вписать в него индексы?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




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


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

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