Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281

Передача ID в combobox

27.12.2018, 18:30. Показов 6538. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема состоит в том, что я из таблицы потребности вывожу данные(когда выбрана строка) в comboboxы, без ID агента и когда я не изменяю данные в combox, и хочу нажать кнопку изменить он условно говоря не видит ID который должен идти в таблицу потребности.
Как сделать так, что бы я могу заносить и брать из нее ID как в комбобокс по свойству ValueMember, а ФИО было бы как DisplayMember

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
//КОД ДЛЯ ВЫВОДА ТАБЛИЦЫ 
using (SqlConnection sqlConnection = new SqlConnection(connectionString))
                {
                    await sqlConnection.OpenAsync();
 
                    object  idc = comboBox1.SelectedValue;
                    Console.WriteLine(idc);
                    object IDA1 = comboBox1.SelectedValue;
                    Console.WriteLine(IDA1);
                   
                    object IDC1 = comboBox2.SelectedValue;
                    Console.WriteLine(IDC1);
                    SqlCommand UpdateNeed = new SqlCommand($"UPDATE  Потребность SET Агент=@IDA,Клиент=@IDC,Минимальная_цена=@PriceMin,"+
"Максимальная_цена=@PriceMax,Минимальная_площадь=@AreaMin,Максимальная_площадь=@AreaMax where ID_потребности=@IDNeed", sqlConnection);
                    UpdateNeed.Parameters.AddWithValue("@IDA", IDA1);
                    UpdateNeed.Parameters.AddWithValue("@IDC", IDC1);
                    UpdateNeed.Parameters.AddWithValue("@PriceMin", Int32.Parse(textBox1.Text));
                    UpdateNeed.Parameters.AddWithValue("@PriceMax", Int32.Parse(textBox2.Text));
                    UpdateNeed.Parameters.AddWithValue("@AreaMin", Int32.Parse(textBox3.Text));
                    UpdateNeed.Parameters.AddWithValue("@AreaMax", Int32.Parse(textBox4.Text));
                    UpdateNeed.Parameters.AddWithValue("@IDNeed", (int)dataGridView1.CurrentRow.Cells[0].Value);
                    UpdateNeed.ExecuteNonQuery();
 
                    update_datagrid();
                    MessageBox.Show("Потребность успешно изменена!");
                }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//ЗАНЕСЕНИЕ ДАННЫХ В COMBOBOX
               using (SqlConnection sqlConnection = new SqlConnection(connectionString))
                {
 
                    await sqlConnection.OpenAsync();
 
                    SqlDataAdapter SelectFIOC = new SqlDataAdapter("Select  id_клиента,concat(Имя,' ',  Фамилия, ' ', Отчество) as ФИО FROM  Клиенты", sqlConnection);
                    DataTable table = new DataTable();
                    SelectFIOC.Fill(table);
 
                    comboBox2.DataSource = table.AsDataView();
                    comboBox2.DisplayMember = "ФИО";
                    comboBox2.ValueMember = "id_клиента";
                }
Миниатюры
Передача ID в combobox   Передача ID в combobox  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.12.2018, 18:30
Ответы с готовыми решениями:

Передача значения с combobox в combobox другой формы
Подскажите пожалуйста, не могу организовать передачу текущего значения из одного combox в другой у меня имеется две формы, требуется...

Передача данных в comboBox
Не могу понять, почему в comboBox не передаются данные для выбора. Подскажите, пожалуйста, в чём проблема? void...

Передача индекса из ComboBox
Как передать индекс из combobox1 в textbox1. Тоесть допустим я выбираю в combobox1 слово под 3 индексом, и мне нужно что бы именно это...

18
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
28.12.2018, 14:37
Dimasta1488, используйте item там будет весь ваш объект из которого вы можете получить любое свойство
object это одна как я понимаю DataRow.
C#
1
var object =comboBox1.items[comboBox1.SelectedIndex]
0
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
29.12.2018, 09:35  [ТС]
не совсем то, что нужно
0
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
29.12.2018, 09:44  [ТС]
Цитата Сообщение от Andreyip Посмотреть сообщение
Dimasta1488, используйте item там будет весь ваш объект из которого вы можете получить любое свойство
object это одна как я понимаю DataRow.
не совсем то, что нужно
я заношу данные в combobox из ячейки, в которой нет ID.
вот я например поменял только минимальную цену, а фио агента оставил, и он выдает ошибку
если я не меняю данных в combo а остается тоже ФИО, то он не видит ID
вот ошибка по вашему примеру
Миниатюры
Передача ID в combobox   Передача ID в combobox  
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
29.12.2018, 10:00
Dimasta1488, не совсем понятно что происходит при вводе данных в Textbox. так же не совсем понимаю зачем у вас комбобоксы и почему вы не используете объектную модель.

Добавлено через 7 минут
C#
1
2
 comboBox2.DisplayMember = "ФИО";
                    comboBox2.ValueMember = "id_клиента";
данные свойства просто показывают какое имя столбца брать для отображения и значения.
вы используете datatable. Item комбобокса при этом является DataRow.
Получить значение DataRow можно указав в индексировании имя столбца.
допустим
C#
1
2
3
DataRow row =comboBox1.items[0];
var id = row["id_клиента"];
var name = row["ФИО"];
А вообще лучше все делать через объектную модель. тогда и отображать данные и менять их будет проще.
0
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
29.12.2018, 10:52  [ТС]
Цитата Сообщение от Andreyip Посмотреть сообщение
не совсем понятно что происходит при вводе данных в Textbox. так же не совсем понимаю зачем у вас комбобоксы и почему вы не используете объектную модель.
когда я выбираю строку, данные из строки отображаются в comboxсах и texboxсах если пользователю нужно будет что-то изменить, то он просто меняет какие либо данные и нажимает кнопку изменить.
НООО!! если пользователь не выбирает(меняет) данные в comboxсах, то запрос не видит ID, который должен браться из строки combobox, но его там и нет, т.к. я не знаю как передать ID из ячейки ФИО в combobox так, что бы его не было видно ни в ячейки не в combobox.
Я конечно могу к строке ФИО через concat добавить ID, а потом его через split получить, но тогда его будет видно

Добавлено через 2 минуты
Если же я выбираю данные из combox, то все нормально, т.к. здесь уже срабатывает valuemember

C#
1
2
3
4
5
6
7
8
9
await sqlConnection.OpenAsync();
 
                    SqlDataAdapter SelectFIOC = new SqlDataAdapter("Select  id_клиента,concat(Имя,' ',  Фамилия, ' ', Отчество) as ФИО FROM  Клиенты", sqlConnection);
                    DataTable table = new DataTable();
                    SelectFIOC.Fill(table);
 
                    comboBox2.DataSource = table.AsDataView();
                    comboBox2.DisplayMember = "ФИО";
                    comboBox2.ValueMember = "id_клиента";
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
29.12.2018, 11:21
Dimasta1488, Смотрите В комбобокс должно отображаться только имя. id же вы должны брать из записей справа. потому что редактируете то вы запись которая в гриде. Combobox на сколько я понял просто показывает на какое имя можно изменить?
0
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
29.12.2018, 12:36  [ТС]
Такс, в комбобоксе у меня отображается ФИО, которое можно выбрать,но так же в комбобоске заносится ID через valuemember.
Но когда я выбираю ячейку в таблице, у меня данные просто копируются в комбо и текстбоксы, и вот когда я только выбрал строку и хочу изменить например только площадь то из таблице у меня не передается ID агента, по-этому ошибка

Добавлено через 29 секунд
но я думаю вы все равно не поняли что я сказал)))
0
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
29.12.2018, 12:47  [ТС]
не знаю, возможно на видео понятно будет. Эта проблема стопорит весь проект
Вложения
Тип файла: rar запись.rar (9.44 Мб, 11 просмотров)
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
29.12.2018, 13:10
Dimasta1488, зачем вам в комбобоксе id? поясните. В моем понимании справа выбираем слева отображается. если справа ничего не выбрано то слева вы вносите нового человека которого потом можно добавить через кнопку добавить.

Добавлено через 2 минуты
Dimasta1488, Кажется понял. Покажите код заполнения текстовых полей и combobox при выборе в списке справа.
0
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
29.12.2018, 13:21  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//ЗАПОЛНЕНИЕ ТАБЛИЦЫ ПРИ  ЗАГРУЗКИ ФОРМЫ
 private async void Need_Load(object sender, EventArgs e)
        {
            using (SqlConnection sqlConnection = new SqlConnection(connectionString))
            {
                await sqlConnection.OpenAsync();
 
                SqlDataAdapter da = new SqlDataAdapter("Select  P.ID_потребности as ID,concat(A.Имя,' ',A.Фамилия,' ',A.Отчество) as [ФИО агента],"+
"concat(C.Имя,' ',C.Фамилия,' ',C.Отчество) as [ФИО клиента],P.Минимальная_Цена,P.Максимальная_Цена,P.Минимальная_площадь,"+
"P.Максимальная_площадь From Потребность as P join Агенты as A on P.Агент=A.ID_агента join Клиенты as C on P.Клиент=C.ID_клиента", sqlConnection);
                DataTable table = new DataTable();
                da.Fill(table);
                dataGridView1.DataSource = table.AsDataView();
            }     
            dataGridView1.Columns[3].HeaderText = "Min цена";
            dataGridView1.Columns[4].HeaderText = "Max цена";
            dataGridView1.Columns[5].HeaderText = "Min площадь";
            dataGridView1.Columns[6].HeaderText = "Max площадь";
        }
C#
1
2
3
4
5
6
7
8
9
10
//ОТОБРАЖЕНИЕ ПРИ ВЫБОРЕ ЯЧЕЙКИ
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            comboBox1.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
            comboBox2.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();
            textBox1.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();
            textBox2.Text = dataGridView1.CurrentRow.Cells[4].Value.ToString();
            textBox3.Text = dataGridView1.CurrentRow.Cells[5].Value.ToString();
            textBox4.Text = dataGridView1.CurrentRow.Cells[6].Value.ToString();
        }
Добавлено через 2 минуты
Я через concat соединяю несколько столбцов из агентов "И+ Ф +О"
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
29.12.2018, 13:50
Dimasta1488,
вот ваша проблема
comboBox1.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();
comboBox2.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();

при установке текста установка значения не происходит.
Установка значения происходит при valuechange.
нужно как минимум делать так

C#
1
comboBox1.SelectedItem = (comboBox1.DataSource as DataTable).AsEnumerable().Where(r => r.Field<int>("id_клиента") == (int)dataGridView1.CurrentRow.Cells[0].Value);
Добавлено через 1 минуту
Для второго комбобокса я думаю сообразите.
0
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
29.12.2018, 15:39  [ТС]
Что-то не работает
Миниатюры
Передача ID в combobox  
0
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
29.12.2018, 15:41  [ТС]
не, что-то не то вы посоветовали
Цитата Сообщение от Andreyip Посмотреть сообщение
(int)dataGridView1.CurrentRow.Cells[0].Value);
почему берется Cell[0], это же ID потребности.
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
31.12.2018, 21:21
Цитата Сообщение от Dimasta1488 Посмотреть сообщение
почему берется Cell[0], это же ID потребности.
точняк, протупил чего то.

Тогда так. Но в потребности тогда нужно хранить Id клиента а не имя для целостности данных.

C#
1
comboBox1.SelectedItem = (comboBox1.DataSource as DataTable).AsEnumerable().Where(r => r.Field<string>("ФИО") == dataGridView1.CurrentRow.Cells[1].Value.ToString());
0
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
31.12.2018, 22:34  [ТС]
Ну в потребности у меня и так хранится ID агента, а не ФИО
0
16 / 10 / 4
Регистрация: 16.12.2017
Сообщений: 281
31.12.2018, 22:40  [ТС]
Ну ошибка
Миниатюры
Передача ID в combobox  
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
01.01.2019, 14:21
Dimasta1488,
ну оно же вам говорит что source у вас не заполнен.
В общем вот это нужно выполнять в методе load или show формы. т.е сразу как загрузились.
C#
1
2
3
4
5
6
7
8
9
await sqlConnection.OpenAsync();
 
                    SqlDataAdapter SelectFIOC = new SqlDataAdapter("Select  id_клиента,concat(Имя,' ',  Фамилия, ' ', Отчество) as ФИО FROM  Клиенты", sqlConnection);
                    DataTable table = new DataTable();
                    SelectFIOC.Fill(table);
 
                    comboBox2.DataSource = table.AsDataView();
                    comboBox2.DisplayMember = "ФИО";
                    comboBox2.ValueMember = "id_клиента";
Далее работайте только с выборкой из комбобоксов. А именно установкой свойств selecteditem, selectedindex, selectedvalue, selectedtext. Так же если datasource у вас не заполнен то откуда по вашему мнению возьмется Id? ведь список не заполнен..
0
548 / 355 / 120
Регистрация: 17.08.2014
Сообщений: 1,351
02.01.2019, 16:52
Dimasta1488, зачем вы создаете дубли тем с одним и тем же вопросом?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.01.2019, 16:52
Помогаю со студенческими работами здесь

Передача значения с ComboBox в клас
Привет всем :) Не могли бы Вы, уважаемые форумчане, подсказать, как передать значение из ComboxBox в класс, если в классе есть enum (пример...

Передача значения из ComboBox в StringGrid
Смысл такой... ComboBox рисуется на ячейке StringGrid, в комбе выбирается значение и записывается в эту ячейку. Проблема в том, что если...

Combobox и DataGridView передача данных
у меня есть datagridview на форме 1 и есть combobox на форме 2 это все подключено к базе sql как сделать так что бы когда я вводил данные в...

Передача информации с comboBox в label
Здавствуйте. Такой вопрос. Вот есть comboBox и есть label, с comboBox есть ну дапустим два значения (one и two), как сделать так что б при...

Передача значения переменной из события comboBox
Здравствуйте. помогите пожалуйста реализовать передачу данных из события есть событие comboBox private void...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru