2009-05-06 6 views
5

Je crée une application Windows en C#,DataBindingComplete est appelé plusieurs fois se

J'ai 1 Datagridview et après je l'ai mis est DataSource il devrait avoir 3 lignes.

Je joins 2 événement Habdlers au 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. 
} 

Pourquoi cela se produit et comment pourrais-je résoudre ce problème?

Merci à l'avance ...

+0

J'ai eu le même problème. Et je suis absolument certain que j'attribue la propriété DataSource une fois. Tous les 4 événements se déclenchent en même temps, malgré les données que je passe est énorme (plus de 10k lignes). Il y a une seule lecture dans le tampon DataTable, qu'une seule opération d'assignation. Encore 4 "DataBindingComplete" tiré. – Harry

+0

Pour résoudre le problème, voir mes commentaires [ici] (http://stackoverflow.com/questions/24329964/alternative-to-datagridview-databindingcomplete-event) – nam

Répondre

0

Je crois que cela dépend de vos autres méthodes, où vous définissez réellement la source de données. Il me semble que vous définissez le DataSource deux fois ou appelez DataBind deux fois, et sur chaque DataBind vous obtenez réellement deux lignes dans le DataGridView, donc le total de 4.

code supplémentaire pourrait aider ...

Quelques choses à essayer: recherche DataBind(), DataSource(), etc dans votre code et assurez-vous qu'il n'appelé dans les endroits appropriés.

De plus, il n'est pas nécessairement mauvais que le DataBind soit appelé deux fois, en supposant que quelque chose change entre les databinds ... un changement d'état ... vraiment difficile à dire sans background.

6

From msdn online DataBindingComplete Event

Cet événement est déclenché lorsque le contenu du changement de source de données ou lorsque la valeur de la DataSource, DataMember ou BindingContext changements de propriété.

E.g. Si vous attribuez Datasource, puis en ajoutant 3 lignes -> 4 fois l'événement déclenché

Questions connexes