Ich habe eine asp:Repeater
erstellt, die ich mit .ascx
controls fülle:
Auf Seite habe ich:
%Vor% Innerhalb Product.ascx.cs
Ich habe:
Am Product.ascx
Ich habe:
Problem ist, wenn ich auf die Bildschaltfläche klicke, bekomme ich einen Fehler:
%Vor%Ich habe versucht, den ersten Code zu ändern:
%Vor% Aber wenn ich auf den Bildknopf klicke, ist ImportantData
leer.
Was habe ich hier falsch gemacht?
PageLoad passiert vor Ihrem Postback-Event, ändern Sie Ihr Event in PreRender:
%Vor%Dies wird Ihren Repeater nach dem Postback binden und Ihren Postback-Wert beibehalten.
Bearbeiten:
Hier ist ein gutes Bild, das den gesamten WebForms-Seitenlebenszyklus zeigt :
Wie Sie sehen können
ProcessPostData
event heißt AFTER Load
event.
Sie möchten also Ihre Repeater
binden, nachdem die PostData verarbeitet wurde.
Dies kann in PreRender
Das Problem ist nicht, dass Sie die Datenbindung an der falschen Stelle aufrufen, sondern höchstwahrscheinlich, dass das Benutzersteuerelement die Daten im Viewstate nicht korrekt speichert. Es sieht so aus, als ob Sie ein benutzerdefiniertes Steuerelement verwenden. Was Sie tun können, wenn dies der Fall ist, ist eine Eigenschaft in Ihrem Benutzersteuerelement zu erstellen, die aus dem Viewstate liest. Hier ist ein Beispiel:
%Vor%Dadurch können Ihre Daten erhalten bleiben und die erforderlichen Daten beim Postback vorhanden sein.
und dies ist korrekt, so dass es nur auf die anfängliche Belastung geladen wird.
%Vor%