我正在关注this tutorial并尝试使用Data Binding
而不是教程中演示的Editable ComboBox
来实施DataGrid
。
我遇到的唯一问题是我不能以这种方式向DB添加新项目
这是我加载数据的方式:
private DbEntities db = new DbEntities();
private void Window_Loaded(object sender, RoutedEventArgs e)
{
CollectionViewSource productViewSource =
((CollectionViewSource)(this.FindResource("productViewSource")));
db.Product.Load();
productViewSource.Source = db.Product.Local;
}
在Button_Click
事件中,我尝试了以下方法但没有成功:
db.Product.Add(new Product() { ProductCode = "", Description = "" });
db.Product.Load();
productViewSource.Source = db.Product.Local;
productComboBox.Items.Refresh();
productViewSource.View.MoveCurrentToLast();
和
ListCollectionView lcv = productComboBox.ItemsSource as ListCollectionView;
lcv.AddNewItem(new Product() { ProductCode = "", Description = "" });
lcv.MoveCurrentToLast();
使用默认DataGrid
模板提供的DataSource
可以通过在网格的空底行添加新项目来按预期工作。
请指教。
答案 0 :(得分:0)
您似乎没有在任何地方调用数据上下文对象上的SaveChanges
。我原以为你的代码看起来应该更像这样:
db.Product.Add(new Product() { ProductCode = "", Description = "" });
db.SaveChanges();
有关在实体框架中添加实体的更多帮助,请参阅MSDN上的Add/Attach and Entity States页面。