2010-11-23 3 views
0

J'ai une application écrite en C#. Les enregistrements de la base de données sont affichés via le code studio visuel généré automatiquement (DataTableAdapter).C# Winforms DataTableAdapter databindinding question

this._______tTableAdapter.Fill(this._______SQLDataSet._______); 

Maintenant, quand je fais des modifications à la DB, et non par la DataTableAdaper - mais par un code sur un autre WinForm, fermez-le et ouvrez une autre où j'ai mon DataTable rempli d'adaptateur, les modifications ne sont pas représentés jusqu'à ce que je redémarrer mon application. Je ne comprends pas, j'ai essayé de fermer la fenêtre en utilisant this.Close() et this.Dispose() pour libérer toutes les ressources, donc la prochaine fois que je l'ouvrirai, le code devrait relier les nouvelles données de la base de données, mais ce n'est pas le cas ... Qu'est-ce que je fais mal? Merci beaucoup pour toute réponse ...

+0

Donc, le problème est que le 'DataGridView' affichant les données n'est pas rafraîchissant? – dandan78

+0

yep .. été googleing depuis un moment, l'anwser le plus proche que je pourrais trouver était de changer la propriété "Copy To Output Directory" de la base de données à "Copy If Newer" .. mais cela n'a pas résolu le problème .. – Andrej

Répondre

0

Avez-vous essayé de recourir explicitement DataGridView.Rows.Clear() lorsque vous êtes en train de charger le formulaire?

Si cela ne fonctionne pas, chargez le formulaire en mode débogage et observez l'état des données à chaque étape.

0

Ma suggestion/commentaire peut ne pas correspondre à vos conditions, mais en vous référant à ce problème, vous remarquerez que vous pouvez également modifier les données en DataSet (en ne passant pas les calculs sur le serveur chaque fois que vous changez). Si toutes les modifications sont apportées, vous pouvez appeler la méthode Update sur l'adaptateur de données qui fournit des mises à jour de données pour toutes les lignes modifiées. Quoi qu'il en soit - si vous souhaitez uniquement rafraîchir les modifications apportées dans l'autre instance - réorganisez simplement DataGridView ou définissez à nouveau DataSource.