Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51

Привязать выделенную запись в DatagridView к текстбоксам и комбобоксу

04.05.2014, 09:34. Показов 1835. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! У меня есть БД, мне нужно загрузить данные из двух связанных таблиц (Таблица Drug и Unit_of_measure) в datagridview и при выборе конкретной записи datagridview эти записи должны отображать в двух textbox и одном combobox. Делаю это так:

C#
1
2
3
4
5
6
7
8
9
10
11
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\Elena\\Desktop\\ГОСЫ и ДИПЛОМ\\07.04.2014\\DB1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
        SqlCommand cmd = new SqlCommand();
 
        SqlDataAdapter da = new SqlDataAdapter();
        DataSet ds = new DataSet();
        SqlCommandBuilder cb;
        
        con.Open();
        cmd = new SqlCommand("SELECT Drug.ID_drug AS 'Номер препарата', Drug.Name AS 'Название', Unit_of_measure.Name AS 'Единица измерения' FROM Drug, Unit_of_measure WHERE Drug.ID_unit = Unit_of_measure.ID_unit ", con);
        da = new SqlDataAdapter(cmd);
        da.Fill(ds, "Unit_of_measure, Drug");


Пытаюсь привязать так:
C#
1
2
3
4
5
6
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "Unit_of_measure, Drug";
 
            textBox1.DataBindings.Add("Text", ds, "Drug.ID_drug");
            textBox2.DataBindings.Add("Text", ds, "Drug.Name");
            comboBox1.DataBindings.Add("Text", ds, "Unit_of_measure.Name");
Не получается, но когда работала с одной таблицей, все отлично получалось
Миниатюры
Привязать выделенную запись в DatagridView к текстбоксам и комбобоксу   Привязать выделенную запись в DatagridView к текстбоксам и комбобоксу  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.05.2014, 09:34
Ответы с готовыми решениями:

Как записать в переменную выделенную строку DataGridView?
Как записать выделенную строку в переменную ???

Как привязать к комбобоксу динамически изменяющийся список Excel
Как привязать к комбобоксу динамически изменяющийся список Excel, чтобы содержимое ComboBox - а менялось в зависимости от этого...

DatagridView - получить выделенную область
Как мне узнать область которая была выделенная? Вот индексы ячейки(колонки/рядка) dataGridView1.CurrentCell.index ...

23
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
04.05.2014, 10:06  [ТС]
Помогите, пожалуйста, разобраться, что не так
0
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
04.05.2014, 12:32
FedorF,
попробуй так
C#
1
 textBox1.DataBindings.Add("Text", ds, "Drug.ID_drug",true);
0
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
04.05.2014, 12:59  [ТС]
jecus, Не помогло
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.05.2014, 13:09
Ты неправильно делаешь. Выборка из нескольких таблиц будет немодифицируемой. Нужно каждую таблицу загрузить отдельно и назначить связь. После этого добавить колонку DataGridViewCombobox, она будет отображать связанные записи.
А привязка у тебя не работает, потому что ты неверно указываешь имена. Таблица названа "Unit_of_measure, Drug", это один набор соединённый через SELECT из нескольких, вот относительно неё и надо указывать имена полей.

Добавлено через 5 минут
Вот про связанные таблицы: https://www.cyberforum.ru/ado-... ost6058347

Вот про привязку TextBox: https://www.cyberforum.ru/ado-... ost6059014
1
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
04.05.2014, 16:56  [ТС]
nmcf, Спасибо, я попробовала сделать, как вы написали

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
 DataSet ds = new DataSet();
            SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\Elena\\Desktop\\ГОСЫ и ДИПЛОМ\\07.04.2014\\DB1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
 
            con.Open();
            
            SqlDataAdapter drug_adapter = new SqlDataAdapter("Select * FROM Drug", con);
            SqlCommandBuilder drugbuilder;
            drugbuilder = new SqlCommandBuilder(drug_adapter);
 
            SqlDataAdapter unit_adapter = new SqlDataAdapter("Select * FROM Unit_of_measure", con);
            SqlCommandBuilder unitbuilder;
            unitbuilder = new SqlCommandBuilder(unit_adapter);
 
            drug_adapter.Fill(ds, "Drug"); //прочитать Drug
            unit_adapter.Fill(ds, "Unit_of_measure");  // прочитать Unit_of_measure
            con.Close();
 
            ds.Tables["Unit_of_measure"].Columns["Name"].Unique = true;
 
            ds.Relations.Add(new DataRelation("data_rel", ds.Tables["Drug"].Columns["ID_unit"], ds.Tables["Unit_of_measure"].Columns["ID_unit"]));
 
            dataGridView1.DataSource = ds.Tables["Drug"]; // Drug в Датагридвью
            dataGridView1.Columns["ID_unit"].Visible = false; // скрываем колонку с идентификатором
 
            var cbx_unit = new DataGridViewComboBoxColumn(); //добавляем новою колонку
 
            cbx_unit.Name = "Единица измерения";
            cbx_unit.DataSource = ds.Tables["Unit_of_measure"];
            cbx_unit.DisplayMember = "Name";
            cbx_unit.ValueMember = "ID_unit";
            cbx_unit.DataPropertyName = "ID_unit";
            cbx_unit.MaxDropDownItems = 10;
            cbx_unit.FlatStyle = FlatStyle.Flat;
            dataGridView1.Columns.Insert(4, cbx_unit);
            dataGridView1.Columns[4].Width = 200;
Но не данные не выводятся в datagridview

Добавлено через 1 час 21 минуту
nmcf, можете сказать, в чем ошибка?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.05.2014, 17:04
При создании связи последовательность должна быть parent, child:
C#
1
ds.Relations.Add(new DataRelation("data_rel", ds.Tables["Unit_of_measure"].Columns["ID_unit"], ds.Tables["Drug"].Columns["ID_unit"]));
DataGridView пустой или что?
1
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
04.05.2014, 17:07  [ТС]
nmcf, исправила связь, но DataGridView все равно пустой
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.05.2014, 17:10
Вроде всё верно. Смотри тогда отладчиком строки 14 и 15. Заполняются ли DataTable в составе DataSet.
0
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
04.05.2014, 17:20  [ТС]
Нет, не заполняются(
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.05.2014, 17:30
Может адаптер так создавать, как у тебя сразу было и как у меня в примере: new SqlDataAdapter(new SqlCommand("..."));
0
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
04.05.2014, 18:03  [ТС]
nmcf, все равно не выводятся данные

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DataSet ds = new DataSet();
            SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\Elena\\Desktop\\ГОСЫ и ДИПЛОМ\\07.04.2014\\DB1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
 
            con.Open();
 
            SqlDataAdapter drug_adapter;
            SqlCommand drug_cmd = new SqlCommand("Select * FROM Drug", con);
            drug_adapter = new SqlDataAdapter(drug_cmd);
 
            SqlCommandBuilder drugbuilder;
            drugbuilder = new SqlCommandBuilder(drug_adapter);
 
            SqlDataAdapter unit_adapter;
            SqlCommand unit_cmd = new SqlCommand("Select * FROM Unit_of_measure", con);
            unit_adapter = new SqlDataAdapter(unit_cmd);
 
            SqlCommandBuilder unitbuilder;
            unitbuilder = new SqlCommandBuilder(unit_adapter);
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.05.2014, 18:18
Открытие нормально проходит?
0
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
04.05.2014, 18:25  [ТС]
nmcf, открытие соединения?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.05.2014, 18:40
Да.
0
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
04.05.2014, 18:42  [ТС]
Да, нормально
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.05.2014, 19:03
Даже не знаю. Надо смотреть твою программу.
0
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
04.05.2014, 19:26  [ТС]
nmcf, А можете, пожалуйста, посмотреть?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
04.05.2014, 19:44
Ну если получится. У меня SQL Server не настроен.
0
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
04.05.2014, 20:10  [ТС]
Вот программа, заранее спасибо большое!
Вложения
Тип файла: rar NewProgram.rar (134.9 Кб, 7 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.05.2014, 20:10
Помогаю со студенческими работами здесь

Не могу отредактировать выделенную строку в DataGridView
У меня есть приложение, в ней DataGridView выводит данные, из отдельного окна с combox-ами, приложения связано с базой MS SQL. Мне надо...

Вставить из буфера текст в выделенную ячейку datagridView
Народ, подскажите как вставить из буфера текст в выделенную ячейку datagridView, работа в C#. Не задавайте свои вопросы в чужих темах

Как сделать выделенную строку в DataGridView текущей
Есть грид, мышкой выбираем например, 7-ю строчку и например по нажатию Button выполняется команда DataGridView.Rows.Selected=...

Как преобразовать выделенную строку в dataGridView в объект
Допустим в качестве DataSource у dataGridView был установлен список List<MyClass> list; List<MyClass> list = new...

Выделенную строку DataGridView переместить вниз на одну позицию
Привет всем. Помогите пожалуйста с вопросом. Есть программка на vb.NET. На форме есть DataGridView и Button. Можно ли сделать так, чтобы...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru