2010-05-04 59 views
0

後,我有一個問題,這個代碼:C#實體框架和清爽的列表框插入

public partial class KnihovnyForm : Form 
{ 
    DatabazeEntities db; 

    public KnihovnyForm() 
    { 
     InitializeComponent(); 

     db = new DatabazeEntities(); 

     knihovnyListBox.DataSource = db.Knihovny; 
     knihovnyListBox.DisplayMember = "Nazev"; 
    } 

    protected override void OnFormClosed(FormClosedEventArgs e) 
    { 
     base.OnFormClosed(e); 
     db.Dispose(); 
    } 


    private void novaButton_Click(object sender, EventArgs e) 
    { 
     string text = ""; 
     if (InputForm.ShowDialog("Název nové knihovny", ref text) == DialogResult.OK) 
     { 
      Knihovna n = new Knihovna() { Nazev = text }; 
      db.AddToKnihovny(n); 
      db.SaveChanges(); 

      CurrencyManager cm = (CurrencyManager)BindingContext[db.Knihovny]; 
      cm.Refresh(); 
     } 
    } 
} 

當我新的項目添加到數據庫中,我想表明它在列表框中。但它看起來像實體框架不更新上下文或類似的東西。如果我關閉此表單並再次打開,則所有項目(包括新項目)都將正確顯示。如何在插入後立即顯示所有項目?

對不起,我的英語和一些捷克語的代碼。 (詞典:Knihovny - >書櫃,Nazev - >名稱)

回答

1

您需要添加一個數據綁定。看看thisthis

在初始化時設置DataSource獲取當前值,但動態更新需要綁定。