Frage

Ich bin eine Reihe von Kontrollen in dem Ereignis Page Load zu laden. Allerdings müssen diese Kontrollen I jede Seite Last neu erstellen, das Mittel, um ihre Daten an anderer Stelle zu speichern. Dies ist umständlich.

protected void Page_Load(object sender, EventArgs e)
{
   MyControl control = (MyControl)LoadControl(...);
   control.Initialize(GlobalClass.controlData);
   //^gives the control the data it had previously.  
   //Or use ViewState["controlData"] if serializable.
   Controls.Add(control);
}

Ich fühle mich wie soll ich if (!IsPostBack) {} werden, aber ich weiß nicht, wie oder warum.

Im Gegensatz dazu, wenn ich die Kontrollen in das Markup zu platzieren, dann scheinen die Kontrollen hartnäckig zu bleiben. Zum Beispiel wird sich erinnern, eine Schaltfläche in Aufschlags Änderungen an seiner Eigenschaft Text (glaube ich?).

<asp:Button ID="buttonText" runat="server" 
            Text="Text Segment" onclick="buttonText_Click" />

Wie pflege ich irgendeine Art von Beharrlichkeit, mit dynamisch hinzugefügt Kontrollen, wie Kontrollen über Mark-up hinzugefügt? Das würde mir viel Arbeit und Frustration sparen.

Danke.

(Ich habe für eine kleine Ewigkeit codiert, aber je mehr ich ASP.NET, desto mehr verwirrt ich geworden. Und das ist genau das Gegenteil von dem ist, was, wie ich verstanden Arbeit :-P Lernen.)

War es hilfreich?

Lösung

Für dynamisch geladene Steuerelemente, wenn Sie sie während des Page_Init Ereignis laden, können Sie dann fügen sie dem Viewstate und sie werden in der Lage sein Zustand von Postback auf Postback zu erhalten.

Andere Tipps

Ich verstehe Ihren Standpunkt. Ja, das ist umständlich, aber das ist, wie eine stateless Technologie funktioniert.

Es gibt keinen Weg, um die gleiche bahaviour von statischen Kontrollen zu erreichen (die, die Sie setzen in dem HTML-Markup).

Befolgen Sie die Tipps, die ich in dieser Antwort gab:

Zugriff auf Steuerelemente dynamisch erstellt (c #)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top