Question

Je charge une série de contrôles en cas Page_Load. Cependant, je dois recréer ces contrôles chaque chargement de page, des moyens de stockage qui leurs données ailleurs. Ceci est lourd.

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);
}

Je sens que je devrais utiliser if (!IsPostBack) {}, mais je ne sais pas comment, ni pourquoi.

En revanche, si je place les commandes dans le balisage, puis les contrôles semblent rester persistants. Par exemple, un bouton balisage se souviendra toute modification apportée à sa propriété Text (je crois?).

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

Comment puis-je maintenir une sorte de persistance avec des contrôles dynamiquement ajoutés, comme les contrôles ajoutés par majoration? Cela me sauver beaucoup de travail et de frustration.

Merci.

(je l'ai Codé pour une petite éternité, mais plus je ASP.NET, plus je deviens confus. Ce qui est exactement le contraire de ce que je compris l'apprentissage au travail :-P).

Était-ce utile?

La solution

Pour les contrôles chargés dynamiquement, si vous les chargez lors de l'événement Page_Init, vous pouvez les ajouter à la ViewState et ils seront en mesure de conserver l'état de publication sur PostBack.

Autres conseils

Je comprends votre point. Oui, ceci est lourd, mais c'est comment fonctionne la technologie sans état de.

Il n'y a aucun moyen d'atteindre le même bahaviour des contrôles statiques (ceux que vous mettez dans le balisage HTML).

Suivez les conseils que je donnai dans cette réponse:

Accès aux contrôles créés dynamiquement (c #)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top