2009-05-06 23 views
5

Estoy creando una aplicación de Windows en C#,DataBindingComplete se está llamado varias veces

tengo 1 Datagridview y después de lo fijo es origen de datos que debe tener 3 filas.

He adjuntado 2 Evento Habdlers a la Datagrdview

void dgvProductList_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)<br> 
{ 
    //this gets called 4 times 
} 

private void dgvProductList_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{    
      //gets called 2 times. 
} 

¿Por qué sucede esto y cómo se lo arreglo?

Gracias por adelantado ...

+0

Tengo el mismo problema. Y estoy absolutamente seguro de que asigno la propiedad DataSource una vez. Los 4 eventos se activan al mismo tiempo, a pesar de que los datos que paso son enormes (más de 10k filas). Hay una sola lectura en el buffer de DataTable, que una sola operación de asignación. Todavía 4 "DataBindingComplete" dispararon. – Harry

+0

Para resolver el problema, vea mis comentarios [aquí] (http://stackoverflow.com/questions/24329964/alternative-to-datagridview-databindingcomplete-event) – nam

Respuesta

0

yo creo que depende de sus otros métodos, en los que en realidad estás estableciendo el origen de datos. Me parece que está configurando DataSource dos veces o llamando a DataBind dos veces, y en cada DataBind en realidad está obteniendo dos filas en DataGridView, por lo tanto, el total de 4.

Algunos código adicional podría ayudar ...

Algunas cosas para probar: búsqueda de DataBind(), origen de datos(), etc en el código y asegurarse de que sólo ha de ser llamado en los lugares apropiados.

Además, no es necesariamente malo que se llame al DataBind dos veces, suponiendo que algo cambie entre los databinds ... algún cambio de estado ... realmente difícil de decir sin antecedentes.

6

From msdn online DataBindingComplete Event

Este evento se genera cuando los contenido del cambio de la fuente de datos o cuando el valor de la DataSource, DataMember, o BindingContext cambios de propiedades.

E.g. Si está asignando Datasource, y luego agrega 3 filas -> 4 veces el evento despedido

Cuestiones relacionadas