2014-06-09 109 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