2014-06-09 198 views
0

我正在关注this tutorial并尝试使用Editable ComboBox而不是教程中演示的DataGrid来实现Data Binding
我遇到的唯一问题是我无法以这种方式向数据库添加新项目。
这是我如何加载数据:WPF实体框架绑定

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

因此添加了产品,但它的字段是空的?如果没有更改字段的代码,即“ComboBox”,很难诊断问题。 – icebat

回答

0

对于任何地方的数据上下文对象,您似乎都不会调用SaveChanges。我本来以为你的代码应该看起来更像是这样的:

db.Product.Add(new Product() { ProductCode = "", Description = "" }); 
db.SaveChanges(); 

请参阅MSDN上的Add/Attach and Entity States页面获得更多的帮助与实体框架中加入的实体。

+0

尝试过,但由于某些原因,即使我在ComboBox中更改了它们的值并由于某种原因再次致电'SaveChanges' – Yoav

+0

*,由于某种原因,'ProductCode'和'Description'值仍为空白...尝试调试代码以找出原因。如果你不能帮助你,我无法帮助你。 – Sheridan