Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Добавление и удаление данных DataGridView


Автор: Master_ 10.6.2011, 21:48
Visual Studio 2010, ADO.NET.

Есть обычный DataGridView.
Он отображает данные из таблиц. 
Есть такая таблица:
Personal 
Цитата

full_name
qualification
operation_id



В просмотре, то есть в SELECT'е надо выводить не operation_id, а operation_name. Это я могу легко сделать исправив запрос в SelectCommand у TableAdapter'а.

Проблема в том, что после этого я не знаю как сделать добавление новых записей.
То есть я ввожу 
Цитата

full_name
qualification
[b]operation_name[/b]


Но вместо operation_name то мне в базу надо вбить operation_id, а вот как это сделать? Какие наводки? Вообще не пойму  smile 

Автор: Gluttton 10.6.2011, 23:01
Master_, т.е. пользователь при вводе новой записи должен ввести и ID для неё?

Автор: Master_ 10.6.2011, 23:56
Нет, он выбирает или вводит operation_name, а при сохранении данных operation_name надо заменить на соответствующий operation_id..

Автор: Gluttton 11.6.2011, 08:08
Цитата(Master_ @  10.6.2011,  23:56 Найти цитируемый пост)
он выбирает

В таком случае предположу, что используется DropDownList.
Если да, то решение, может быть следующим:
Код

<asp:DropDownList 
    id="dropDownListOperation"
    runat="server"
    DataSourceID="dataSourceOperation"
    DataTextField="operation"
    DataValueField="operation_id" />                        

Цитата(Master_ @  10.6.2011,  23:56 Найти цитируемый пост)
а при сохранении данных operation_name надо заменить на соответствующий operation_id.. 

И тогда пользователь сможет выбирать текстовое значение, а в приложении можно будет работать с ключем.

Цитата(Master_ @  10.6.2011,  23:56 Найти цитируемый пост)
или вводит operation_name

Не представляю себе как это происходит.

Добавлено через 1 минуту и 39 секунд
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.aspx

Автор: Экскалупатор 11.6.2011, 09:34
Master_, ты можешь попробовать выбрать не три записи а четыре, т.е. и имя и id только показывать только то что тебе нужно, тогда при выборе чего то у тебя будет возможность прочесть из скрытого поля id и дальше с ним работать.

Автор: mongoloid 12.6.2011, 16:58
 Если я правильно понял, то ситуация выглядит так:

1. Есть таблица Personal (full_name, qualification, operation_id)
2. Есть некая таблица Operation(operation_id, opertion_name)

 Задача: вывести на экран таблицу Personal, ввести в нее данные и сохранить. При этом вместо operation_id должно отображаться opertion_name (а в Personal, разумеется, должно сохраняться соответствующее operation_id)

 Подобную задачу я решил так:
 1. Создал БД  с таблицами в дизайнере Студии
 2. Подключил БД в качестве источника данных.
 3. Во вкладке "Источники данных" выполнил команду "Настроить источник данных с помощью мастера".
 4. В открывшемся окне галкой выделил нужные мне таблицы и поля (в вашем случае это таблицы Personal и Operation со всем полями)
 5. Перетащил из вкладки "Источники данных" нужную мне таблицу (Personal) на форму. 
 6. В свойствах появившегося на форме DataGridView есть свойство Columns, кликайте его в окне настройки свойств.
 7. В перечне отображаемых полей оставьте только нужные вам (в вашем случае это, видимо, full_name, qualification, operation_id)
 8. Выберите в списке полей ("Выбранные столбцы") столбец operation_id
 9. В свойствах этого столбца:
 9.1 установить ColumnType = DataGridViewComboBoxColumn
 9.2 DataSource = personalBindngSource (или как он у вас называется для вашей таблицы)
 9.3 DisplayMemeber = opertion_name
 9.4 ValueMember = operation_id

 Теперь в ДатаГридВью не нужно будет ручками вколачивать имя операции, будете выбирать посредством комбобокса. 

Автор: Master_ 12.6.2011, 23:09
Именно то, что нужно. Жалко только то что я это нашел сам перед тем как вы ответили smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)