Je charge une série de contrôles dans l'événement Page_Load. Cependant, je dois recréer ces contrôles à chaque chargement de page, ce qui signifie stocker leurs données ailleurs. C'est lourd.Contrôles de chargement dynamique et persistance dans ASP.NET
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 contrôles dans le balisage, alors les contrôles semblent rester persistants. Par exemple, un bouton dans le balisage se souviendra de toute modification apportée à sa propriété Text (je pense?). Comment puis-je maintenir une sorte de persistance avec des contrôles ajoutés dynamiquement, comme les contrôles ajoutés via le balisage? Cela me sauverait 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 j'ai compris apprendre à travailler :-P.)
Vous ne voulez pas dire ajouter le contrôle lui-même, vous voulez dire ajouter les différentes propriétés du contrôle, correct? J'ai déjà essayé d'ajouter le contrôle lui-même (plus rapidement que d'ajouter toutes les propriétés nécessaires: -P), et les contrôles ne sont pas sérialisables. – Yerg
@Yerg - Si la mémoire sert (et je ne l'ai pas cherché pour la vérifier), juste en réglant 'EnableViewState = true;' sur le contrôle dans Page_Init le place dans ViewState. Vous n'avez pas besoin d'ajouter quoi que ce soit manuellement. –
J'ai Reflectored le contrôle de zone de texte, et il enregistre toujours des choses dans le ViewState d'après ce que je me souviens. Je suis curieux de savoir ce que fait réellement EnableViewState ... Quoi qu'il en soit, la seule façon d'enregistrer une liste de contrôles ajoutés dynamiquement est de séparer le contrôle de ses données, et en fonction du nombre d'instances de données, le chargement de la page en fait autant instances du contrôle avec ces données. D'autres idées? – Yerg