Wenn ich ein GridView mit einem deklarativen SqlDataSource-Steuerelement als Datenquelle habe, wann ruft diese Datenquelle dann ihre Daten ab und wann findet die Bindung im Seitenlebenszyklus statt?
Dieser Artikel über Page Cycle ist ziemlich gut.
Angenommen, Sie haben eine GridView, die in jeder Zeile einen Unternehmensdatensatz zusammen mit einer Liste der Unternehmensverantwortlichen in einem ListBox-Steuerelement anzeigt. Um die Liste der Beauftragten zu füllen, würden Sie das ListBox-Steuerelement an ein Datenquellensteuerelement (z. B. SqlDataSource) binden, das die Daten des Unternehmensbevollmächtigten mithilfe der CompanyID in einer Abfrage abruft.
Wenn die Datenbindung des ListBox-Steuerelements Eigenschaften wie DataSourceID und DataMember, sind deklarativ festgelegt, die Das ListBox-Steuerelement versucht, eine Bindung herzustellen seine Datenquelle während des Containings DataBinding-Ereignis der Zeile. Aber die CompanyID Feld der Zeile nicht einen Wert bis zur GridView enthalten Das RowDataBound-Ereignis des Steuerelements tritt auf. In diesem Fall wird die Kindersteuerung (die ListBox - Steuerelement) ist vor dem gebunden enthält Kontrolle (die GridView Kontrolle) ist gebunden, so ihre Datenbindungsstufen sind nicht synchronisiert.
Um diese Bedingung zu vermeiden, legen Sie die Daten ab Quellcodeverwaltung für das ListBox-Steuerelement im selben Vorlagenelement wie der ListBox Steuerelement selbst, und nicht festgelegt die Datenbindungseigenschaften der ListBox deklarativ. Setze stattdessen sie programmatisch zur Laufzeit während des RowDataBound-Ereignisses, so dass Das ListBox-Steuerelement bindet nicht an seine Daten bis zur CompanyID Informationen sind verfügbar.
Tags und Links data-binding asp.net events