Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Постепенная запись в datagridview


Автор: starostin 26.10.2010, 21:45
может фигово ищу. Хочу сделать что бы datagridview загружал в себя не сразу все записи что есть, а потихоньку, а пользователь в это время мог жамкать остальные элементы, вижу только решения постраничным выходом, но мне кажеться это не красивым способом. Может есть свойство просто у viewa про которое я не знаю ? smile 

Автор: mrbrooks 27.10.2010, 07:53
DataGridView.VirtualMode и иже с ним. Однако сама по себе загрузка большого количества данных не очень хорошая идея.

Автор: Экскалупатор 27.10.2010, 07:53
тебе надо определиться между "загружать" частично и "отображать" частично. потому как во втором случае загружаться будет все равно все, а в первом будет часто происходить выборка(не знаю откуда ты там выбираешь). можно из параллельного потока делать все, тогда пользователь сможет жать кнопки пока происходит выборка дынных.

Автор: starostin 27.10.2010, 10:29
Вот мне хотелось бы именно из параллельного потока запускать, только не очень хорошо представляю себе как это выглядитб Дело в том что хочу организовать "живой поиск", то есть моя представляемая схема такая: запускаеться приложение; запускаеться два потока: 1ый) ждёт действия от пользователя, вклячая ожидания события textchanged  у одного из textboxов, и передавая из него текст во второй 2ой) загружает и отображает по мере загрузки данных соответствующих введённому тексту. Собсна проблема в том что я не втыкаюсь в параллелизацию, и не понимаю как при дописывании символа в текстбокс остановить 2ой процесс  если он идёт, запустить его заново с новым значением.
Ну и ещё один вопрос ламерского содержания, если вы мне подскажите кодом(а я именно на это и надеюсь) придёться ли мне загружать в datagridview каждую строку селектом или есть возможность оставить эту работу тулзам из postgressqldata

Автор: starostin 7.11.2010, 22:35
немного покопав на эту тему нашёл на мсдн, дай бог ему долгих лет жизни, пример http://msdn.microsoft.com/ru-ru/library/ms171624(VS.90).aspx
ничего сложного с первого взгляда, скопипасти, подправь строку конекции и в бой, но почему то в строке
Код

rowCountValue = (int)command.ExecuteScalar();

вылезает ошибка "Заданное приведение является недопустимым.". Помимо того что это сообщение на русском, меня крайне беспокоит этот момент. я практически ничего не менял, только изменил запрос, вместо coun(*) оставил тока пару столбцов. Кто нить встречался с этим?

Автор: MasterOfCode 8.11.2010, 07:09
ExecuteScalar вернет тебе из первой строки, значение первой колонки. Если у тебя там символы, а ты его в int пытаешься преобразоваться, то InvalidCastException тебе не избежать. Почитай внимательнее про ExecuteScalar, ExecuteReader в том же MSDN.

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

Автор: starostin 9.11.2010, 10:19
спасибо за подсказку,исправил. щас странная проблема: почему то не отображаеться содержимое яйчеек. выводиться нужное колличество строк и столбцов, но значений нет в них

Автор: starostin 9.11.2010, 13:53
Это то же решил, всё в моей невнимательности дело. Подскажите, можно ли, указывая селект руками(т.е. не из датасета), скрывать стобец, не вызвав события CellFormatting? Возможно спросите зачем, а возможно я что то делаю не так. Дело в том что я хочу скрыть колонку id, потому что пользователю она не нужна и засаряетрабочее пространство которого и так маловато. а мне надо работать с остальными данными из этой строки, которые не были выбраны селектом из бд, то есть в datagridview их нет. Если есть способы о которых я не знаю плиз подскажите.

Автор: starostin 11.11.2010, 11:41
Отказался от привязки к cellformating.
Новая проблема. Странное дело, ситуация слегка запутанная, сначала я писал с помощью тулза триального от devart, но его время кончилось, я бросил его и стал конектиться к базе через odbc драйвер, при его использовании кодировка сменилась, теперь это невооброжаемые строки из смеси турецкого и различных символов, которые я бы даже по накурке нарисовать бы не смог. Это наталкивает меня на мысль, что можно с помощью какого то свойства прописать кодировку в которой производить чтение из бд, есть идеи или знания по этому поводу?

Автор: starostin 15.11.2010, 16:08
Поставил свой локальный сервер, новая странная вещь. Когда конекшусь к старому серверу на каких то очень старых фрях, загружаються все данные, а когда конекчюсь к своему локальному, стоящему на винде, отображаеться лишь их малая часть. Кто нить представляет с чем это может связано?
И сразу тут же второй вопрос. Как я уже говорил, для заполнения использую метод взятый с msdn, котоый подгружает базу в фоновом режиме. Как бы мне остановить этот процесс, что бы начать его занаво с другими значениями?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)