2010-05-04 2 views
0

i ont un problème avec ce code:C# Entity Framework et listBox rafraîchissante après insertion

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(); 
     } 
    } 
} 

Quand j'Ajouter un nouvel élément à la base de données, je veux le montrer dans la liste. Mais il semble que Entity Framework ne met pas à jour le contexte ou quelque chose comme ça. Si je ferme ce formulaire et l'ouvre à nouveau tous les éléments (y compris le nouveau) sont affichés correctement. Comment puis-je montrer tous les articles immédiatement après insertion?

Désolé pour mon anglais et quelques mots tchèques dans le code. (Dictionnaire: Knihovny -> Bibliothèque, Nazev -> Nom)

Répondre

1

Vous devez ajouter un DataBinding. Jetez un oeil à this ou this.

La définition de la source de données à l'initialisation obtient la valeur actuelle, mais les mises à jour dynamiques nécessitent une liaison.