Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> EF и DataGridView, Как сохранять изменения в БД? 
V
    Опции темы
psiallon
Дата 3.9.2009, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 22.8.2009
Где: Оренбург

Репутация: нет
Всего: 1



Здравствуйте.
Имеется EDM-модель базы данных, которую надо прикрутить к DataGridView, при загрузке формы делается следующее:
Код

        private DataTestEntities data = new DataTestEntities();

        private void MainForm_Load(object sender, EventArgs e)
        {
            DataGridView dg = new DataGridView();
            dg.Dock = DockStyle.Fill;
            Controls.Add(dg);
            dg.DataSource = data.Products;
        }

Данные в DataGridView отображаются - с этим все в порядке. Но не могу понять, как сохранять измененные данные из DataGridView в источник (базу данных)? Я понимаю, что по сути, при редактировании данных в DataGridView мы редактируем объекты, и для сохранения их в источник нужно вызывать метод SaveChanges() объекта data (DataContext). Но это, почему-то не влияет на сохранение... Хотя проходясь по data.Products - видно, что изменения в объекты внесены.
Про добавление и удаление строк из DataGridView я вообще молчу - из data.Products ничего не удаляется и ничего не добавляется.

Неужели мне придется отслеживать события DataGridView и делать все руками? Или же я что-то не так делаю или что-то не понимаю? Помогите пожалуйста, буду очень благодарен.
PM MAIL ICQ   Вверх
Raistlin
Дата 3.9.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 19.5.2009

Репутация: нет
Всего: нет



Так помещать данные в DataGridView не совсем корректно.
Используйте BindingSource, указывайте его в качестве источника для грида.
В BindingSource помещайте данные следующим образом:
Код

ObjectResult<Product> products = data.Products.Execute(Objects.MergeOption.AppendOnly);
bindingSource.DataSource = products;

И, естественно, для сохранения, используйте тот же самый экземпляр DataTestEntities.
PM MAIL   Вверх
psiallon
Дата 3.9.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 22.8.2009
Где: Оренбург

Репутация: нет
Всего: 1



Спасибо большое, помогло. Видимо я упустил какую-то главу из глав книги про биндинг данных.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.