2009-05-06 15 views
5

Sto creando un'applicazione Windows in C#,DataBindingComplete è sempre chiamato più volte

Ho 1 Datagridview e dopo essere stata impostata è DataSource dovrebbe avere 3 file.

Ho allegato 2 Evento Habdlers al 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. 
} 

Perché accade questo e come vorrei risolvere il problema?

Grazie in anticipo ...

+0

Ho avuto lo stesso problema. E sono assolutamente sicuro di assegnare una volta la proprietà DataSource. Tutti e 4 gli eventi si attivano contemporaneamente, nonostante i dati che passo siano enormi (oltre le 10k righe). C'è una sola lettura nel buffer DataTable, che una singola operazione di assegnazione. Ancora 4 "DataBindingComplete" licenziato. – Harry

+0

Per risolvere il problema, vedere i miei commenti [qui] (http://stackoverflow.com/questions/24329964/alternative-to-datagridview-databindingcomplete-event) – nam

risposta

0

credo che dipende dalla vostra altri metodi, in cui si sta effettivamente l'impostazione del DataSource. Mi sembra che tu stia impostando DataSource due volte o chiamando DataBind due volte, e su ogni DataBind stai ottenendo due righe nel DataGridView, quindi il totale 4.

Alcuni codice aggiuntivo potrebbe aiutare ...

Alcune cose da provare: ricerca di DataBind(), DataSource(), ecc nel codice e assicurarsi che viene chiamato solo nei luoghi appropriati.

Inoltre, non è necessariamente negativo che il DataBind venga chiamato due volte, supponendo che qualcosa cambi tra i database ... qualche cambiamento di stato ... davvero difficile da dire senza sfondo.

6

From msdn online DataBindingComplete Event

Questo evento viene generato quando il contenuti del cambiamento origine dati o quando il valore del DataSource, DataMember, o BindingContext modifiche alle proprietà.

E.g. Se si sta assegnando Datasource e quindi si aggiungono 3 righe -> 4 volte si è verificato un evento

Problemi correlati