Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2015, 22:32   #1
fygas1991
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 36
По умолчанию вывод из БД в несколько последовательных Combobox

Доброго времени суток!
Подскажите пожалуйста, как реализовать вывод информации в combobox, в зависимости от результата предыдущего!

Пример: Имеется 3 combobox'a
в 1 я забиваю визульным образом через талицу из источника данных.
создаю событие SelectedIndexChanged на 1-ый CBX, в него вставляю такой код:

Код:
 private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (fb.State == ConnectionState.Closed)
                fb.Open();
            FbDataAdapter ComboboxDataAdapter = new FbDataAdapter("SELECT NT.NAME_TECHNIQUE, 
NT.ID FROM TYPE_TECHNIQUE TT INNER JOIN NAME_TECHNIQUE NT ON TT.ID=NT.ID_TYPE 
WHERE TT.TYPE=" + comboBox4.SelectedValue + "", fb);
            DataSet ComboboxDataSet = new DataSet();
            ComboboxDataAdapter.Fill(ComboboxDataSet);
            comboBox5.DataSource = ComboboxDataSet.Tables[0];
            comboBox5.DisplayMember = "NAME_TECHNIQUE";
            comboBox5.ValueMember = "ID";
            fb.Close();
            MessageBox.Show(comboBox5.ValueMember);
        }
в него данные выводятся, все хорошо! в зависимости от того что в 1-ом, выводиться во втором. Все ОК!

Теперь я создаю событие SelectedIndexChanged на 2-ом комбобоксе. вставляю в него код:

Код:
 private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (fb.State == ConnectionState.Closed)
                fb.Open();
            FbDataAdapter ComboboxDataAdapter = new FbDataAdapter("SELECT NT.NAME_TECHNIQUE, 
NT.ID FROM TYPE_TECHNIQUE TT INNER JOIN NAME_TECHNIQUE NT ON TT.ID=NT.ID_TYPE 
WHERE TT.ID=" + comboBox4.SelectedValue + "", fb);
            DataSet ComboboxDataSet = new DataSet();
            ComboboxDataAdapter.Fill(ComboboxDataSet);
            comboBox5.DataSource = ComboboxDataSet.Tables[0];
            comboBox5.DisplayMember = "NAME_TECHNIQUE";
            comboBox5.ValueMember = "ID";
            fb.Close();
        }
и вот тут происходит беда. Никаких ошибок, но и информаию(список) в третий комбабокс не выводит. БД заполнена.

VS 2010
db: Firebird

Последний раз редактировалось Stilet; 15.06.2015 в 09:08.
fygas1991 вне форума Ответить с цитированием
Старый 14.06.2015, 23:36   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от fygas1991 Посмотреть сообщение
в 1 я забиваю визульным образом через талицу из источника данных.
создаю событие SelectedIndexChanged на 1-ый CBX, в него вставляю такой код:

Код:
 private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (fb.State == ConnectionState.Closed)
                fb.Open();
            FbDataAdapter ComboboxDataAdapter = new FbDataAdapter("SELECT NT.NAME_TECHNIQUE, NT.ID FROM TYPE_TECHNIQUE TT 
INNER JOIN NAME_TECHNIQUE NT ON TT.ID=NT.ID_TYPE 
WHERE TT.TYPE=" + comboBox4.SelectedValue + "", fb);
            DataSet ComboboxDataSet = new DataSet();
            ComboboxDataAdapter.Fill(ComboboxDataSet);
            comboBox5.DataSource = ComboboxDataSet.Tables[0];
            comboBox5.DisplayMember = "NAME_TECHNIQUE";
            comboBox5.ValueMember = "ID";
            fb.Close();
            MessageBox.Show(comboBox5.ValueMember);
        }
в него данные выводятся, все хорошо! в зависимости от того что в 1-ом, выводиться во втором. Все ОК!

Теперь я создаю событие SelectedIndexChanged на 2-ом комбобоксе. вставляю в него код:

Код:
 private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (fb.State == ConnectionState.Closed)
                fb.Open();
            FbDataAdapter ComboboxDataAdapter = new FbDataAdapter("SELECT NT.NAME_TECHNIQUE, NT.ID FROM TYPE_TECHNIQUE TT 
INNER JOIN NAME_TECHNIQUE NT ON TT.ID=NT.ID_TYPE
 WHERE TT.ID=" + comboBox4.SelectedValue + "", fb);
            DataSet ComboboxDataSet = new DataSet();
            ComboboxDataAdapter.Fill(ComboboxDataSet);
            comboBox5.DataSource = ComboboxDataSet.Tables[0];
            comboBox5.DisplayMember = "NAME_TECHNIQUE";
            comboBox5.ValueMember = "ID";
            fb.Close();
        }
Исходя из приведённого кода, можно предположить, что у Вас в обоих случаях источник данных подключается к одному и тому же combobox'у.

Последний раз редактировалось Stilet; 15.06.2015 в 09:08.
Streletz вне форума Ответить с цитированием
Старый 15.06.2015, 12:23   #3
fygas1991
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 36
По умолчанию

Нет в проекте все нормально, я просто пробовал. Смотрел что будет. На самом деле код в 1 КБ такой:

Код:
        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (fb.State == ConnectionState.Closed)
                fb.Open();
            FbDataAdapter ComboboxDataAdapter = new FbDataAdapter("SELECT TT.TYPE, TT.ID 
FROM TYPE_TECHNIQUE TT INNER JOIN KATEGORY K ON TT.ID_KATEGORY=K.ID 
WHERE K.ID=" + comboBox3.SelectedValue + "", fb);
            DataSet ComboboxDataSet = new DataSet();
            ComboboxDataAdapter.Fill(ComboboxDataSet);
            comboBox4.DataSource = ComboboxDataSet.Tables[0];
            comboBox4.DisplayMember = "TYPE";
            comboBox4.ValueMember = "ID";
            fb.Close();
        }
Вывел mesageBox со значениями:
comboBox5.DisplayMember
comboBox5.ValueMember
Он выводит надписи NAME_TECHNIQUE и ID соответственно. А не присваиваемые значения. Подскажите, что можно сделать?

Последний раз редактировалось Stilet; 17.06.2015 в 16:35.
fygas1991 вне форума Ответить с цитированием
Старый 17.06.2015, 16:11   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от fygas1991 Посмотреть сообщение
Вывел mesageBox со значениями:
comboBox5.DisplayMember
comboBox5.ValueMember
Он выводит надписи NAME_TECHNIQUE и ID соответственно. А не присваиваемые значения. Подскажите, что можно сделать?
так 4 или 5 комбобокс?
в 5 вы эти значения и присваиваете же
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Один массив строк в несколько Combobox Валерий LX C# (си шарп) 4 17.09.2011 17:44
несколько ComboBox-ов с одинаковыми данными.... brans Microsoft Office Excel 2 07.11.2010 14:06
Как заполнить несколько ComboBox'ов? tns-ka Microsoft Office Excel 4 24.12.2009 21:08
Несколько ComboBox WhistleR Компоненты Delphi 10 05.10.2009 09:24
Как сделать, чтобы один элемент списка в ComboBox писался в несколько строк? Andr Общие вопросы Delphi 5 15.08.2007 22:24