Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860

Получение id выбранного пункта в combobox

09.04.2025, 03:22. Показов 1652. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня имеются 4 таблицы в БД (см.скрин):
1. Страна (Country)
2. Тип субъекта (Type_subject)
3. Наименование субъекта (Name_subject)
4. Город субъекта (City)

У меня в таблице "тип субъекта" имеется шестой пункт, который высвечивается при выборе страны "Украина", когда выбирается соответствующий пункт в перечне стран.
Но когда он попадает в combobox - у него selectedindex становиться равным 1 (см.код).

Но мне нужно получить при выборе его ... id его из таблицы в БД --- т.е. = 6.
КАК?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
        private void comboBox4_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (comboBox4.SelectedIndex > -1)
            {
                comboBox6.Enabled = true;
                comboBox6.BackColor = Color.FromArgb(0xff, 0xff, 0xff);
 
                using (SqlConnection connection2 = new SqlConnection(ConfigurationManager.ConnectionStrings["Executive_Documentation.Properties.Settings.Database1ConnectionString"].ConnectionString))
                {
                    connection2.Open();
                    int i = comboBox4.SelectedIndex + 1;
                    string a = comboBox4.GetItemText(comboBox4.SelectedItem);
                    Console.WriteLine("combobox4 - " + i);
                    Console.WriteLine("combobox4 text - " + a);
                    SqlDataAdapter dataAdapter4 = new SqlDataAdapter($"SELECT * FROM Name_subject WHERE Name_subject.id_type_subject = " + i, connection2);
                    DataTable EmployeeDataTable4 = new DataTable();
                    dataAdapter4.Fill(EmployeeDataTable4);
                    comboBox6.DataSource = EmployeeDataTable4;
                    comboBox6.DisplayMember = "Subject";
                    comboBox6.ValueMember = "Id";
                    comboBox6.ValueMember = null;
                    comboBox5.ValueMember = null;
                    comboBox6.ValueMember = null;
                    comboBox5.SelectedItem = null;
                    comboBox6.SelectedItem = null;
                    comboBox5.Enabled = false;
                    connection2.Close();
                }
            }
        }
 
        private void comboBox6_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (comboBox6.SelectedIndex > -1)
            {
                comboBox5.Enabled = true;
                comboBox5.BackColor = Color.FromArgb(0xff, 0xff, 0xff);
 
                using (SqlConnection connection3 = new SqlConnection(ConfigurationManager.ConnectionStrings["Executive_Documentation.Properties.Settings.Database1ConnectionString"].ConnectionString))
                {
                    connection3.Open();
                    int i = comboBox4.SelectedIndex + 1;
                    string a = comboBox4.GetItemText(comboBox6.SelectedItem);
                    Console.WriteLine("combobox6 - " + i);
                    Console.WriteLine("combobox6 text - " + a);
                    SqlDataAdapter dataAdapter6 = new SqlDataAdapter($"SELECT * FROM City WHERE id_name_subject = (SELECT Id FROM Name_subject WHERE Subject LIKE N'%" + a + "%')", connection3);
                    DataTable EmployeeDataTable6 = new DataTable();
                    dataAdapter6.Fill(EmployeeDataTable6);
                    comboBox5.DataSource = EmployeeDataTable6;
                    comboBox5.DisplayMember = "Name_city";
                    comboBox5.ValueMember = "Id";
                    comboBox5.SelectedItem = null;
                    connection3.Close();
                }
            }
        }
Миниатюры
Получение id выбранного пункта в combobox   Получение id выбранного пункта в combobox   Получение id выбранного пункта в combobox  

Получение id выбранного пункта в combobox  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.04.2025, 03:22
Ответы с готовыми решениями:

Присвоить значение переменной в зависимости от выбранного пункта ComboBox
Искал по форуму, нашёл похожую тему, но код оттуда выдаёт ошибку В целом: нужно при выборе из...

Получить id выбранного пункта в combobox c#
Нужно сформировать правильно запрос select для combobox5 1. В combobox3 был выбран пункт...

Html: в блоке Select значение addr.SelectedIndex всегда остается 0, вне зависимости от выбранного пункта
Доброго времени суток уважаемые форумчане! Вопрос банален до невозможности, но сам не понимаю в...

3
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
09.04.2025, 11:40
xamelione25, А MySQL тут при чём вообще? Это вопрос по C#.
Не уверен, но по-моему в C# можно привязывать комбобокс к источнику данных и задавать как display значение (в списке) и одновременно key значение (например, id из БД). Соответственно, при выборе пользователем строки из списка, вы получите так же и KeyValue. Точнее подскажут на профильном форуме.

Добавлено через 4 минуты
Впрочем, у вас так и сделано:
C#
1
2
3
comboBox6.DataSource = EmployeeDataTable4;
comboBox6.DisplayMember = "Subject";
comboBox6.ValueMember = "Id";
Добавлено через 1 минуту
Значит, где-то косяк с привязкой данных. Спецы по C# подскажут.
0
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860
09.04.2025, 23:09  [ТС]
Gluck99, Там вопрос немного в другом состоял, мне нужен просто сам формат запроса select
По которому, я смогу сделать по порядку или в одном запросе: Получить тот id, который выбранный элемент в combobox несет в таблице БД.
Потому что когда пользователь выбирает в предыдущем combobox пункт, данные из таблицы "Типы субъектов" (см.скрин) - фильтруются, и id-ишники у них перепрошиваются.

То есть я, когда выбираю страну "Украина", у меня фильтрация происходит по колонке id_Country из таблицы Type_subject
И потом у меня по id-ишнику фильтруются все значения и передаются в combobox --- и id у них становятся новые, а мне нужно взять, те которые были присвоены им в таблице.
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
09.04.2025, 23:41
Лучший ответ Сообщение было отмечено xamelione25 как решение

Решение

xamelione25, Я мало что понял. Почему id "перепрошиваются"? Что это значит? Вообще-то ID в БД меняются редко, они потому и ID.

До меня кажется дошло (посмотрел код). Вы зачем-то используете selected index элемента (строки списка) в combobox. Но это же не ID. И этот индекс, разумеется, меняется, как только меняется содержимое combobox.

Видимо, вы проигнорировали то, что я написал выше. Вам надо использовать для выборки не индекс выбранного элемента в списке, а key value, которое привязывается к этому элементу и которое будет соответствовать ID в БД.
Вот у вас связка элемента в combobox'е с ID в БД:
C#
1
2
3
comboBox6.DataSource = EmployeeDataTable4;
comboBox6.DisplayMember = "Subject";
comboBox6.ValueMember = "Id";
Соответственно, вам надо в запросе указывать не "comboBox.SelectedIndex + 1" в качестве аргумента для "WHERE", а извлекать "ValueMember" и его пихать в запрос.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.04.2025, 23:41
Помогаю со студенческими работами здесь

Вернуть значение выбранного пункта в ContextMenuStrip
Здравствуйте! Собственно вся суть сабжа в заголовке. Т.е. есть ContextMenuStrip в нем Items'ы...

Программа тестирования: проверка не выбранного пункта, а введенного
Есть приложение,ответы берет из xml и присваивает радиобаттону,но нужно сделать пару вопросов чтобы...

Как связать два ComboBox так, чтобы при заполнении одного ComboBox он соответствовал со значением другого ComboBox
Здравствуйте. Помогите мне, пожалуйста, сделать это через SQL запрос! У меня есть одна таблица -...

От выбранного значения первого ComboBox должно зависеть содержание второго
Привет! Есть два combobox. На первом комбобоксе есть список городов. А на втором комбобоксе есть...

Отобразить в TextBox цену выбранного в ComboBox товара
Суть проблемы такова: - есть база данных c таблицей tblGoods с полями GoodsID, GoodsName,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru