2010-06-09 6 views
4

J'ai obtenu une zone de texte et utiliser la liaison de données à un objet. Cela fonctionne bien, jusqu'à ce que j'essaie de sélectionner un nouveau produit:Liaison de données à un objet - comment mettre à jour un objet/une liaison?

product = new Product(id); 
textbox.DataBindings.Add("Text", product, "ProductName"); 

// After user action: 
product = new Product(newId); // <- the textbox isn't updated 

Dois-je effacer le databinding et le mettre à nouveau après que le produit est mis à jour?

Répondre

8

En résumé: vous devez rétablir le DataBinding car le TextBox fait référence à l'ancien objet. Mais pour rendre cela un peu plus robuste, vous devriez peut-être utiliser une BindingSource pour votre DataBinding. Pour que cela fonctionne, vous devez ouvrir votre formulaire en mode Création.

  • Sélectionnez votre zone de texte et ouvrez la fenêtre Propriétés
  • Rechercher dans la catégorie données et cliquez sur la croix à gauche des (DataBindings) propriété
  • Cliquez sur le bouton déroulant à côté de le texte propriété
  • Dans la liste déroulante sélectionnez Ajouter une source de données de projet
  • De l'assistant, sélectionnez objet et suivant votre type d'objet

Maintenant, vous obtiendrez un nouvel objet dans votre formulaire (par exemple productBindingSource), qui est lié au texte de votre TextBox. Last but not least, vous devez attacher votre objet en utilisant le code suivant:

productBindingSource.DataSource = product; 

Mais aussi cette solution ne permet pas contre une réappairant, mais tout ce que vous avez à faire est maintenant:

product = new Product(); 
productBindingSource.DataSource = product; 
Questions connexes