2009-10-10 2 views
9

J'ai un BindingList <> d'objets, mis à la source de données d'un BindingSource. Ceci est défini sur le DataSource d'un DataGridView.Corriger le moyen de dissocier un BindingSource d'un DataGridView

Je suis soucieux de ne pas causer de fuites de mémoire potentielles, je me demande donc s'il existe un moyen privilégié de désengorger ces connexions lorsque j'en ai fini avec les données.

Je pense:

datagridview.DataSource = null; 
bindingsource.DataSource = null; 
bindingsource.Clear(); 

Pour re-bind:

bindingsource.DataSource = bindinglist<myObjects>; 
datagridview.DataSource = bindingsource; 

Est-ce bon ordre, ou est-ce vraiment? Ai-je omis quoi que ce soit qui devrait être là?

Tous les pointeurs appréciés, merci.

Répondre

12

L'affectation de null à la source DataGrid DataSource est la meilleure façon d'effacer la source de données de la grille, vous avez raison.

11

Si vous utilisez des colonnes personnalisées, définissez AutoGenerateColumns sur false avant de supprimer le DataSource. Cela garantira que vos colonnes personnalisées sont conservées. Sinon, ils seront effacés et générés automatiquement sur le DataBind suivant.

datagridview.AutoGenerateColumns = false; 
datagridview.DataSource = null; 

Édition: Je ne sais pas pourquoi cela a été rejeté. C'est la solution correcte pour les colonnes non auto générées. J'ai le projet de le prouver. J'espère que quelqu'un le trouvera utile.

Questions connexes