Perte des controles ajoutés dynamiquement

cutkemist Messages postés 3 Date d'inscription lundi 23 janvier 2006 Statut Membre Dernière intervention 25 septembre 2006 - 25 sept. 2006 à 12:44
crilun Messages postés 114 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 17 octobre 2006 - 26 sept. 2006 à 18:11
Bonjour,
j'espère me trouver dans la bonne section du forum.

J'ai une question de base, qui semblera certainement très bas niveau pour beaucoup d'entre vous.

J'ai une webform avec une des controles asp (table etc)
Je dois lui ajouter dynamiquement un tableau et un nombre de checkBox et de listBox variables en fonction de l'utilisateur connecté.

Donc je fais un truc du style

if (!maPage.IsPostBack)
{
    maPage.controle.add(monTableau);
    monTableau.EnableViewState= true;
           
    maPage.controle.add(monCheckBox);
    etc.... etc....
}

une fois la page chargée l'utilisateur fait joujou avec les checkBox, les listes, etc.
Puis il clique sur le bouton de validation.
et c'est la qu'arrive mon problème, je ne sais pas comment retrouver mes checkBox, et comment faire pour que le tableau se réaffiche.

J'ai bien réussit à conserver le tableau en le plaçant en design et en le remplissant mais je veux pouvoir le faire dynamiquement;
En gros j'aimerais avoir le moins de choses dans ma webform de base, coté design, et tout gérer coté code behind, C#
(c'est pas évident de passer du monde winForm au monde webForm)

Wouarf j'espère que vous arriverez à me comprendre

Merci d'avance.

cu

2 réponses

cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
25 sept. 2006 à 19:33
Salut,

Attention, en webform on est dans un monde déconnecté, donc quand ta requête est finie, les objets créés sont perdus. Donc tu dois les recréer à chaque PostBack pour t'en servir à nouveau.

Dans ton Page_Load, mets toutes les déclarations, instanciations et ajout de contrôles à la page. Et ne mets dans le if(!maPage.IsPostBack) que la partie où tu affectes une valeur par défaut à certains champs (si il y en a une).

Ainsi tes contrôles seront à nouveau instanciés au PostBack, mais cette fois ils contiendront les valeurs choisies par l'utilisateur (et comme il y aura PostBack, le contenu de ton if() ne sera pas exécuté et les contrôles contiendront bien ce qu'il faut )

A++

<hr width="100%" size="2" />Nurgle(Antoine)
0
crilun Messages postés 114 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 17 octobre 2006
26 sept. 2006 à 18:11
crilun

quand tu cree dynamiquement des controles tu dois leur affecté un ID de maniere a pouvoir les retrouver et donc garder l'etat au post
back de la page j'ai d"aj repondu a une question sur le meme principe ici
vas voir ca t'aideras surement.
0
Rejoignez-nous