probleme avec les placeholder - C#/.NET managed - Programmation
Marsh Posté le 28-10-2005 à 16:13:50
Tu dois ajouter tes contrôles à la collection de contrôles enfants de ton contrôle parent
Marsh Posté le 28-10-2005 à 16:27:25
placeholder.Controls.Add(new TextBox())
(enfin preque quoi, il faudra configurer la textbox aussi).
Marsh Posté le 28-10-2005 à 16:52:31
c'est exactement ce que je fais. Puis qd je reload la page pour rajouter encore un texbox il perd celui juste avant
Marsh Posté le 28-10-2005 à 16:53:51
pkoi reload ? tu parles du postback ?
Marsh Posté le 28-10-2005 à 16:58:36
j'ai un bonton "ajouter" qui devrai permettre à chaque click créer un nouveau textbox. Donc c'est un postback.
Marsh Posté le 28-10-2005 à 17:04:38
voila le code
Code :
|
Marsh Posté le 28-10-2005 à 17:04:45
on peut voir le code ?
titione > non pas là dessus, le truc par défaut suffit.
Marsh Posté le 28-10-2005 à 17:05:31
t'as pas de on_init ?
Marsh Posté le 28-10-2005 à 17:06:59
et voili le on_init
Code :
|
Marsh Posté le 28-10-2005 à 17:08:18
et InitializeComponent ?
Marsh Posté le 28-10-2005 à 17:11:31
il y a plus rien apres ca ;-)
Code :
|
Marsh Posté le 28-10-2005 à 17:19:11
tu peux virer le r.enableViewstate stp ?
Marsh Posté le 29-10-2005 à 02:50:25
j'avais essayer sans au debut.
Puis j'ai mis a true et à false sans resultat. Ca viens pas de la
Marsh Posté le 01-11-2005 à 12:23:01
C'est normal, c'est lié au fonctionnement du ViewState.
Fonctionnement normal :
- Chaque controle a un ID.
- Au PostBack, les velurs de chaque contrôle sont sauvées dans le ViewState, identifiée par cet ID.
- A la re-création de la page, ASP.Net parcours l'arbre des contrôle, et rempli, avec les données du ViewState, ceux dont il reconnait l'ID.
Dans ton cas :
- Tes TextBoxes sont bien sauvées dans le ViewState.
- Elles sont identifiées dans le ViewState par leur ID.
- A la re-création de la page, ASP.Net ne trouve pas tes textboxes et ne peut pas les remplir.
Solution :
1 - Il faut les recréer à la main à chaque Page_Load()
2 - Il faut forcer leur ID si tu veux être sûr qu'il soit le même d'un postback à l'autre.
3 - Il faut stocker ces ID entre les psotback (dans le ViewState par exemple)
Code :
|
Marsh Posté le 18-10-2006 à 14:33:59
Je ne suis pas certain que cette sauvegarde manuelle des ID soit obligatoire.
Je m'explique, j'ai justement un problème qui me fait dire le contraire.
J'ai deux pages ASP, avec un placeholder chacune. L'une d'elle ne perd rien au postback. (La proprièté controls contient bien les bonnes choses) alors que l'autre perd tout (il n'y a plus de placeholder au postback).
Pourtant les deux placeholder sont rempli de la même façon (meme fonction) et il n'y a pas plus de sauvegarde des ID dans la 1ere page que dans le 2ème.
Il y a quelque chose qui m'echappe mais ca marche quand même. Il faudrait que j'arrive à trouver pourquoi...
EDIT : Dans la premiere page la fonction de creation du placeholder était appellé à chaque postback. C'est pour cela qu'il etait toujours là. Il suffit donc de reattribuer les memes ID dans cette fonction et ca devrait marcher.
Marsh Posté le 28-10-2005 à 15:39:28
Bonjour,
j'ai un petit soucis avec des composants créés dynamiquements.
En fait, je veux que l'utilisateur puisse saisir un nombre indéfinit de textbox. (en vrai c'est pas des textbox mais le principe doit etre le meme)
A chaque fois qu'il clique sur un bouton "ajouter" un noueau textbox doit apparaitre en conservant les anciens.
Si jamais l'utilisateur clique deux fois, ca marche plus. En fait, il pert chaque textbox deja créer ainsi que la valeur de ce textbox.
Comment faire pour qu'il reste présent.
Merci d'avance