| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Постепенная запись в datagridview |
| Автор: starostin 26.10.2010, 21:45 |
| может фигово ищу. Хочу сделать что бы datagridview загружал в себя не сразу все записи что есть, а потихоньку, а пользователь в это время мог жамкать остальные элементы, вижу только решения постраничным выходом, но мне кажеться это не красивым способом. Может есть свойство просто у viewa про которое я не знаю ? |
| Автор: 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 ничего сложного с первого взгляда, скопипасти, подправь строку конекции и в бой, но почему то в строке
вылезает ошибка "Заданное приведение является недопустимым.". Помимо того что это сообщение на русском, меня крайне беспокоит этот момент. я практически ничего не менял, только изменил запрос, вместо 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, котоый подгружает базу в фоновом режиме. Как бы мне остановить этот процесс, что бы начать его занаво с другими значениями? |