powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / C#, ADO: изменение значений таблицы через её представление(MSSQL view) в DataGridView
4 сообщений из 4, страница 1 из 1
C#, ADO: изменение значений таблицы через её представление(MSSQL view) в DataGridView
    #37299786
BadVodka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Есть следующая задачка:
Проект C#(VS 2010), связан с MS SQL expr 2008 через ado.net. На серваке есть 2 таблицы.
Т1(столбцы) - [Код_Т1_PK], [Username], [FK_T2]

Т2(столбцы)- [Код_Т2_PK], [Organisation_name]

Так же есть view(пусть будет T3), выбирающий из таблиц следующие поля:
[Код_Т1_РК], [Username], [Organisation_name]

Соединение с БД организовывал НЕ через мастер, а вручную(ибо возможно понадобится подключаться к другому серверу, либо под другим именем).

Требуется, чтобы в DataGridView выводились результаты из представления(наглядно, красиво), но любые действия пользователя, совершенные над данными в DataGridView, совершались над таблицей Т1. То есть, например, добавляя/изменяя/удаляя запись в датагриде, запись бы так же добавлялась/изменялась итд в Т1 на сервере. Добавлю, что MSSQL не допускает какого-либо изменения записей в самом представлении, если затрагивается сразу несколько базовых таблиц. Проще говоря, удалить/добавить запись в Т1 через view, выведенный на DataGridView, не получится. Изменить Organisation, к которой относится Username, через представление тоже не получится.

Придумал вот такие извращенные выходы из ситуаций, в зависимости от требуемых действий:

-Удаление делать через T3DataGridView.CurrentRow.Index и myDataTable.Rows[]. Минусы в том, что это заставит юзера удалять по одной записи.

-Добавление как-нибудь через отдельную кнопку, запрос INSERT и кучу текстбоксов сделать. Минусы в том, что это неудобно, ибо в Т1, помимо указанных выше, содержится ещё с десяток столбцов.

Как реализовать изменение - вообще не понятно.

Есть у кого предложения? Буду рад любой помощи.

P.S.

Блин, уже утро, и я очень сильно торможу. Заранее прощу прощения, если запостил не в том разделе.
...
Рейтинг: 0 / 0
C#, ADO: изменение значений таблицы через её представление(MSSQL view) в DataGridView
    #37299879
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BadVodka,

Примите 100 грамм и почитайте про DataAdapter.
...
Рейтинг: 0 / 0
C#, ADO: изменение значений таблицы через её представление(MSSQL view) в DataGridView
    #37301437
BadVodka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решилось добавлением в DataSet объекта DataRelation, связав таким образом Т1 и Т2 по FK. Затем в таблицу, являющуюся источником данных DataGridView(в моём случае это Т1) добавил новую колонку со свойством Expression="Parent(Имя_отношения).Organisation_name". Таким образом можно работать сразу с Т1 непосредственно через datagridview, поэтому с удалением теперь проблем никаких. Осталось додумать, каким образом добавлять/изменять записи так, чтобы пользователю не пришлось вводить Код_T2_PK в поле FK_T2. Попробую как-нибудь сделать через Listbox, со свойствами DisplayMember=Organisation_name и ValueMember=Код_Т2_РК.
...
Рейтинг: 0 / 0
C#, ADO: изменение значений таблицы через её представление(MSSQL view) в DataGridView
    #37304985
BadVodka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказалось, решение ещё проще. Просто нужно было создать колонку вида combobox с датасурсом T2, и привязать её к полю Т1, содержащему ссылку на PK второй таблицы при помощи свойства DataPropertyName="ИмяПоляТ1" =) И никаких DataRelation даже не потребовалось. Выглядит всё так:

DataGridViewComboBoxColumn cb_t2 = new DataGridViewComboBoxColumn();
cb_t2.DataSource = table2;
cb_t2.DisplayMember = "Organisation_name";
cb_t2.ValueMember = "T2_PK";
cb_t2.DataPropertyName = "FK_T2";
userDataGridView1.Columns.Add(cb_t2);
userDataGridView1.DataSource = table1;

Удивительно, что решение оказалось таким простым - форумы пестрят подобными вопросами, а ответ найти никто не может.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / C#, ADO: изменение значений таблицы через её представление(MSSQL view) в DataGridView
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]