![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Не знаю как решить проблему: имеется datagridview, который заполняется из dataset, проблема в том, что когда в datagridview заполняются тысяч десять рядов, при сортировке он начинает надолго задумываться... плюс к тому, для каждого ряда задаётся свой forecolor, который при сортировке сбрасывается... как можно ускорить сортировку и сделать так, чтобы после неё forecolor сохранялся?
--------------------
Даешь открытые исходники! |
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 2 Всего: 186 |
Боюсь, что с таким количеством строк он всегда будет долго грузиться.
|
|||
|
||||
6atoh |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 15.9.2006 Где: Minsk Репутация: 1 Всего: 4 |
При таких больших обьемах данных советую всегда использовать Repeater. Ну и соответственно сортировку приходится ручками...
|
|||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 2 Всего: 186 |
Дык мы (если я правильно понял) про контрол Windows Forms.
|
|||
|
||||
6atoh |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 15.9.2006 Где: Minsk Репутация: 1 Всего: 4 |
Ужос.....совсем заэспэнэтился
![]() |
|||
|
||||
XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Мда... А нельзя данные загонять в промежуточный буфер для последующего вывода, а то у меня есть программа (правда исходников нет), которая также написана с помощью WinForms и в ней загрузка данных в гриду и сортировка происходят практически мгновенно, а строк загружается в гриду порядка 40000... Как такое возможно?
![]() --------------------
Даешь открытые исходники! |
|||
|
||||
LuMee |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 30.3.2007 Репутация: нет Всего: 1 |
Данные всегда будут в промежуточном буфере, типа того же DataTable. Вообще, тут неплохо бы посмотреть код, возможно, тормозит как раз процесс заполнения DataTable'а, или кто у вас там гридвью данными кормит...
Как вариант, можно еще призадуматься - а зачем пользователю 10 тыс. строк на экране сразу? Возможно, следует наложить на данные какие-то доп. фильтры, или еще чего в этом роде? |
|||
|
||||
XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
В общем вот код чтения данных:
Не знаю, как это лучше реализовать... --------------------
Даешь открытые исходники! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Согласен на 100%. Такой грид неудобно скроллировать и сложно найти то что требуется. -------------------- ![]() |
|||
|
||||
XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Хорошо, тогда как лучше разбить на страницы где-то по тысяче строк? И сделать сортировку не видимых строк а всех строк, которые имеются?
--------------------
Даешь открытые исходники! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Запрос делать с указанием TOP COUNT, а для сортировки - ORDER BY.
-------------------- ![]() |
|||
|
||||
XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
А если я данные беру не из базы а из файла? То есть у меня есть файл, определённой структуры. В нём разделители значений представлены табуляцией. Пробовал загружать из него сначала в датасет, потом из датасета в гриду, однако скорость была совсем уж страшной... Сделал напрямую вывод в гриду, однако всё равно не то... --------------------
Даешь открытые исходники! |
|||
|
||||
LuMee |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 30.3.2007 Репутация: нет Всего: 1 |
Думаю, с файлом тут быстро полюбому не получится. Ну разве что файл читать кусками: показать юзеру, скажем, 200 строк, потом по кнопке "Далее" - еще 200, ну в общем сделать что-то вроде постраничной разбивки.
Для пущего пафоса можно еще так извратиться: пусть первые 200 строк сразу заносятся в грид, а остальные тем временем в отдельном потоке засасываются в какой-нить List или DataTable, который затем задается в качестве DataSource гриду. Но тут уже надо будет хорошенько подумать, что да как. Ну и наконец, может все-таки посмотреть в сторону какой-нибудь простенькой СУБД (типа SQLite или еще чего-нить такого встраиваемого)? С ней такие выкрутасы выкручивать будет попроще |
|||
|
||||
XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
С базой уж точно нет смысла возиться... Дело в том, что с файлом, с которым я работаю, нужно провести следующие выкрутасы: 1) Декодировать 2) Дизасемблировать 3) Загрузить в гриду 4) В гриде изменить нужные куски файла 5) Сохранить в файл 6) Ассемблировать 7) Закодировать ЗЫ. Чтобы не возникало никаких подозрений - я работаю над программой, которая работает со строковой информацией одной игры... Грубо говоря - для удобства локализации и т.п. ![]() --------------------
Даешь открытые исходники! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
XavierElf, может проще заюзать готовый провайдер для текстовых файлов (CSV например) который встроен в .NET Framework ? Тогда и нормальные SQL-запросы можно делать.
-------------------- ![]() |
|||
|
||||
XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
А поподробнее про это можно? А то я с CSV раньше не сталкивался. Какие классы следует использовать для этого? --------------------
Даешь открытые исходники! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
OleDbConnection, OleDbCommand для соединения и создания запроса; OleDbDataAdapter - для чтения и сохранения данных в датасет. Строку соединения для коннекшна можно посмотреть тут: www.connectionstrings.com
-------------------- ![]() |
|||
|
||||
XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Я так понял, что разделитель колонок (delimiter) нужно указывать в реестре. А мне вообще не хочется использовать реестр. Есть ли возможность указывать разделитель в коде?
--------------------
Даешь открытые исходники! |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Можно подкинуть shema.ini рядом с файлом бд:
-------------------- ![]() |
|||
|
||||
XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: нет Всего: 1 |
Так, я попробовал как ты написал, однако теперь проблема возникла с запросом... Как правильно строить запрос типа SELECT к нужному мне CSV файлу?
Пробовал так:
выдаёт ошибку синтаксиса в предложении FROM... --------------------
Даешь открытые исходники! |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |