2009-05-06 9 views
5

tworzę aplikacji Windows w C#,DataBindingComplete jest uzyskiwanie nazywa wielokrotnie

mam 1 DataGridView i po I ustaw jego DataSource powinien mieć 3 rzędy.

Mam załączeniu 2 Event Habdlers do 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. 
} 

Dlaczego tak się dzieje i jak to naprawić?

z góry dzięki ...

+0

Mam ten sam problem. I jestem absolutnie pozytywny, przypisuję właściwość DataSource raz. Wszystkie 4 zdarzenia strzelają w tym samym czasie, mimo że dane które przekazuję są ogromne (ponad 10k wierszy). W buforze DataTable znajduje się pojedynczy odczyt, niż pojedyncza operacja przypisania. Nadal trwa 4 "DataBindingComplete". – Harry

+0

Aby rozwiązać problem, zobacz moje komentarze [tutaj] (http://stackoverflow.com/questions/24329964/alternative-to-datagridview-databindingcomplete-event) – nam

Odpowiedz

0

wierzę, to zależy od innych metod, gdzie jesteś rzeczywiście ustawienie DataSource. Wydaje mi się, że albo ustawiasz DataSource dwa razy, albo wywołuje DataBind dwa razy, i na każdej DataBind faktycznie dostajesz dwa wiersze do DataGridView, a więc 4 sumy.

Niektóre dodatkowy kod może pomóc ...

Niektóre rzeczy spróbować: Szukaj DataBind(), źródła danych(), itp w kodzie i upewnić się, że tylko miano w odpowiednich miejscach.

Co więcej, nie jest źle, aby DataBind był wywoływany dwa razy, zakładając, że coś się zmieni między bazami danych ... jakaś zmiana stanu ... naprawdę trudno powiedzieć bez tła.

6

From msdn online DataBindingComplete Event

To zdarzenie jest wywoływane, gdy zawartość zmiany źródła danych lub gdy wartość DataSource, DataMember lub BindingContext zmiany własności.

E.g. Jeśli przypisujesz źródło danych, a następnie dodajesz 3 wiersze -> 4-krotnie wywoływane zdarzenie

Powiązane problemy