Wann sollte PreRender über PageLoad verwendet werden?

8

Verwandte Frage: Alle Web-Steuerelemente eines bestimmten Typs abrufen auf einer Seite

In der obigen Frage habe ich gefragt, wie ich alle Bedienelemente bekommen kann, funktioniert wie ein Zauber, aber etwas passt einfach nicht so, also dachte ich, dass ich es sein könnte. Ich habe den folgenden Code, aber es manipuliert nicht die Steuerelemente auf der Seite, aber in meiner Theorie sollte es funktionieren.

%Vor%

Das ist der Code, GetControlList () Code, den Sie von der verwandten Frage bekommen können, die zeigt, wie es alle Kontrollen bekommt, es ist nur meine Manipulation. Ich versuche, alle Dropdownlistenlistenelemente zu erhalten und ihnen einen Titel hinzuzufügen, damit ich einen Tooltip haben kann.

Es ist eine schnelle Lösung für IE8 und darunter, welche langen Text in Dropdown-Boxen schneidet.

    
Anicho 12.09.2011, 09:37
quelle

2 Antworten

8

Page_Load passiert oft zu früh; Page_PreRender ist der letzte Moment, bevor der HTML-Code der Seite tatsächlich für den Browser gerendert wird. In vielen Fällen ist dies der beste Ort, um Attribute für Benutzersteuerelemente festzulegen.

Dies liegt daran, dass während des Webformular (Seiten) -Lebenszyklus andere Ereignisse auf der Seite (und in den Benutzersteuerelementen auf der Seite ...) vorkommen, die manchmal entfernen / ersetzen / überschreiben ( wirklich ) diese Attribute. Sie können diese Attribute nur dann an den Browser senden, wenn Sie sie anfügen, nachdem alle anderen Lebenszyklusereignisse ausgelöst und bearbeitet wurden, in Page_PreRender.

    
Davide Piras 13.09.2011, 13:59
quelle
8

Tatsächlich kann sogar PreRender in einigen Fällen zu früh sein (z. B. könnten Sie DropDownList -Steuerelemente während der Datenbindung von Steuerelementen, die DataSourceID verwenden, zum Steuerelementbaum hinzufügen).

Es gibt zwei weitere Ereignisse, die möglicherweise besser geeignet sind:

  • PreRenderComplete . An diesem Punkt werden alle Steuerelemente erstellt und die Seite kann wiedergegeben werden.

  • SaveStateComplete . Tritt ein, nachdem der Ansichtszustand und der Steuerungszustand gespeichert wurden. Alle Änderungen, die Sie hier vornehmen, werden nicht beibehalten, um den Status anzuzeigen.

In Ihrem Beispiel (Hinzufügen von clientseitigen Attributen) würde ich das Ereignis SaveStateComplete verwenden, um unnötigen View State Bloat zu vermeiden.

    
Joe 09.10.2012 06:20
quelle

Tags und Links