2009-10-10 20 views
9

Ho un BindingList <> di oggetti, impostato su DataSource di BindingSource. Questo è impostato su DataSource di un DataGridView.Modo corretto per separare un BindingSource da un DataGridView

Mi preoccupo di non causare alcuna perdita di memoria, quindi mi chiedo se c'è un modo preferito per separare queste connessioni quando ho finito con i dati.

Sto pensando di:

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

di re-bind:

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

È questo il giusto ordine, o è veramente importante? Ho omesso qualcosa che dovrebbe essere lì?

Ogni suggerimento è stato apprezzato, grazie.

risposta

12

Assegnazione di null al datagridview DataSource è il modo migliore per cancellare l'origine dati della griglia, si è corretti.

11

Se si utilizzano colonne personalizzate, impostare AutoGenerateColumns su false prima di cancellare DataSource. Ciò garantirà la conservazione delle colonne personalizzate. Altrimenti saranno cancellati e generati automaticamente sul prossimo DataBind.

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

Modifica: Non sono sicuro del motivo per cui è stato rifiutato. Questa è la soluzione corretta per le colonne non generate automaticamente. Ho il progetto per dimostrarlo. Spero che qualcuno lo trovi utile.

Problemi correlati