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


Автор: psiallon 3.9.2009, 08:26
Здравствуйте.
Имеется 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 и делать все руками? Или же я что-то не так делаю или что-то не понимаю? Помогите пожалуйста, буду очень благодарен.

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

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

И, естественно, для сохранения, используйте тот же самый экземпляр DataTestEntities.

Автор: psiallon 3.9.2009, 13:49
Спасибо большое, помогло. Видимо я упустил какую-то главу из глав книги про биндинг данных.

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