Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для xamelione25
-4 / 5 / 2
Регистрация: 04.02.2013
Сообщений: 1,860

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

09.04.2025, 03:22. Показов 1551. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru