2009-10-10 33 views
9

Tengo un BindingList <> de objetos, configurado en DataSource de un BindingSource. Esto se establece en el DataSource de un DataGridView.Forma correcta de desvincular un BindingSource de un DataGridView

Me preocupa no causar posibles fugas de memoria, por lo que me pregunto si hay una forma preferida de desvincular estas conexiones cuando haya terminado con los datos.

Estoy pensando en:

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

Para volver a enlazar:

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

¿Es esta orden correcto, o ¿realmente importa? ¿He omitido algo que debería estar allí?

Cualquier puntero apreciado, gracias.

Respuesta

12

Asignar nulo a DataGridview DataSource es la mejor manera de borrar la fuente de datos de la cuadrícula, está en lo cierto.

11

Si usa columnas personalizadas, establezca AutoGenerateColumns en false antes de borrar el DataSource. Esto asegurará que se conserven sus columnas personalizadas. De lo contrario, se borrarán y se generarán automáticamente en el siguiente DataBind.

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

Editar: No sé por qué esto era por votación. Esta es la solución correcta para columnas generadas sin auto. Tengo el proyecto para probarlo. Espero que alguien lo encuentre útil.

Cuestiones relacionadas