![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
GMC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.12.2006 Репутация: нет Всего: нет |
При работе со справочниками возникла необходимость выборы данных из справочных таблиц, тоесть сделать выбор нужной информации из comboBox(а так же listBox). Проблема в том, чтобы загрузить все данные из таблица в comboBox(или listBox) для дальнейшего выбора нужной информации.
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Вопрос слишком общий. Запрос в базу делать умеем ? Если да, получаем результат (ридером или в датасет адаптером подгружая), пробегаем по строкам результата и добавляем элементы в комбобокс/листбокс.
-------------------- ![]() |
|||
|
||||
GMC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.12.2006 Репутация: нет Всего: нет |
подключение/чтение/запись сделал, но со справочниками что то застрял.
mr.DUDA, если можно я бы хотел на код взглянуть, чтото у меня не получается! :-( |
|||
|
||||
GMC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.12.2006 Репутация: нет Всего: нет |
Напишите ктонить код или лучше пример!!!
|
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Ты опиши конкретно (фразы "со справочниками застрял" - недостаточно), что именно тебе нужно, тогда, возможно, получишь ответ. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
-------------------- ![]() |
|||
|
||||
GMC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.12.2006 Репутация: нет Всего: нет |
После выполения кода listbox1 остается пустым, хотя заполняется в самой функции. DataReader заполняется(returnString = ClientNAme возвращает последнюю сторку из DataReader). Как возвратить тогда все данные из DataReader? Или как то можно подругому ?
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
-------------------- ![]() |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
А других вариантов нет? Просто это хорошо для относительно небольших БД... -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
Листбокс изначально не предназначен для отображения больших объёмов данных, т.к. строки добавляются все что есть (по одной или всем скопом). Нужно копать в сторону более экономичных и быстрых датагридов (не стандартного DataGrid !), желательно с поддержкой lazy load.
-------------------- ![]() |
|||
|
||||
emmanuil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
Зачем цикл?
С DataReader'ом не пробовал, но с DataTable вот так:
таким образом можешь в lb.ValueMember запихивать ключ (к примеру ID), а потом доставать его. При работе с базой такое часто нужно, темболее, если ты делаешь справочники. Добавлено через 1 минуту и 3 секунды прошу прощения: DataSet ds = new DataSet(); |
|||
|
||||
GMC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.12.2006 Репутация: нет Всего: нет |
все равно listBox1 остается пустым.
emmanuil, может ошибка гденить? выложи полностью код.
|
|||
|
||||
GMC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.12.2006 Репутация: нет Всего: нет |
все заработало после того как я передал компонент listBox1 в addcombobox!
Получается что он создавал виртуальный listBox1 ( ListBox listBox1 = new ListBox(), который никак не был связан с листбоксом на форме, поэтому данные и неотображались... |
|||
|
||||
emmanuil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
Да, так и есть. Если ты хотел создавать, то нужо было бы указывать Parent размеры и положение и прочее. Только как я показал было бы лучше и быстрее! ListBox своими средствами загружает данные. ValueMember указывать не обязательно. Попробуй в DataSource указать свой DataReader, тоже должно работать, а цикл делать нужно в крайнем случае, если у контрола нет возможности загрузить данные самостоятельно! Удачи!
|
|||
|
||||
GMC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.12.2006 Репутация: нет Всего: нет |
Дело в том что listBox1 у меня уже был на форме но в самой функции он был невидим, поэтому приходилось создавать его ListBox listBox1 = new ListBox(). Как сделать что бы он был видим в функции, что бы его не создавать так?
|
|||
|
||||
emmanuil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 380 Регистрация: 9.1.2007 Репутация: 1 Всего: 3 |
А функция к какому классу относится?
Если ты хочешь этот метод испотльзовать для многих ListBox"сов, то подавай ListBox через параметр. Если нет, то тогда параметр передовать не обязательно. Если у тебя ListBox1 и addcombobox находятся в одном классе, то просто пиши ListBox1.DataSource.... Если в разных классах, то передавай ListBox1 через свойство или сделай ListBox1 public, что не очень хорошо. А я просто дописал компонет, добавил свойства Connection, command..., метод для заполнения LoadData и все! И принеобходимости вызывал этот метод и все!
Правда тут DevExpress.XtraEditors.CheckedListBoxControl, а не стандартный CheckedListBox, но ты таким же способом можешь сделать свой. в FillDataSet() после dataSet.Clear() можно добавиь dataSet.Reset(); Может этот способ не идеален, просто тут на каждый компонент создается DataSet и остальное, но это все можно упростить и оптимизировать! |
|||
|
||||
GMC |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 12.12.2006 Репутация: нет Всего: нет |
ну мне как раз и нужно использовать для многих ListBox"сов.
А твой вариант тока как нить попробую! ![]() Это сообщение отредактировал(а) GMC - 11.4.2007, 10:14 |
|||
|
||||
vespa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 20.3.2007 Репутация: нет Всего: нет |
У меня тоже проблема с combobox'ом. Задача в следующем. В программе есть датасет, содержащий одну таблицу (оба созданные с помощью визарда). Приложение должно отображать данные текущей строки. Т.е. есть много textbox'ов, в которых отображаются разные поля текущей записи. И должен быть один combobox, в который загружается содержимое ключевого поля таблицы. И когда выбираешь из выпадающего списка какое-нибудь значение, нужно чтобы отбразились остальные данные. Как это сделать автоматически, т.е. с помощью среды Visual Studio 2005? Какие нужно свойства задать combobox'у?
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |