Contenu d'un HTMLcontrol

Signaler
Messages postés
18
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
21 octobre 2006
-
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
-
Bonjour,

J'ai une petite incohérence là et je voulais savoir si c'était normale ou pas.


En fait, dans une de mes pages, j'ai un champ texte html classique (input type='text') et un select html (select classique). Dans leur balise, j'ai rajouté le "runat=server" de façon à pouvoir y accéder via mon code behind.
Plusieurs boutons de ma page mettent à jour le contenu de mon champ texte, et de mon select, en javascript. Je change le texte de la zone de texte, et j'ajoute/enlève des enregistrements de mon select. Donc côté client.

Un dernier bouton (de type .NET cette fois) poste mon formulaire à la toute fin. Dans mon code behind, la propriété "value" renvoie bien le contenu "actuel" de ma zone de texte (contenu modifié par le javascript je le rappelle). Par contre, si je regarde le nombre d'items de ma select, j'obtiens l'ancienne valeur et non celle après modification du javascript.

Est-ce normal ? Si oui , existe-t-il un mot clé ou un moyen d'accéder au nouveau contenu de ma select (en gardant la modification préalable de son contenu côté client pour la rapidité du traitement ! ) ?

Merci pour votre aide.

2 réponses

Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

Oui c'est normal, le mieux est de remplir un champ caché (hiddenfield) lorsque tu fais des ajouts/suppression avec ton select.

Poppyto
Cours de basse gratuits avec vidéos et ralentis
Cours de guitare gratuits avec vidéos et ralentis/A>
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
re,
effectivement, lorsque tu fais des modifications sur ta select côté client, les valeurs la concernant ne sont pas modifiées dans le champs hidden viewstate.

Donc, lors d'un postback, asp.net récupère l'état du contrôle (via le viewstate), et pour la page ton composant n'as subit aucune modification.

Si tu veux juste récupérer le nombre d'entrées dans ta select, un champs hidden (runat=server) peut-être une solution.

Mais tu n'auras pas les entrées de ta select.

Un autre moyen, c'est de guarder ton code côté client tel quel, mais d'ajouter une fonction côté serveur qui récupère les valeurs de ta select.... à l'ancienne.

Et oui, en asp.net on peut toujours accéder à Request.QueryString et Request.Form.

Donc je te suggère de faire une petite fonction qui, à chaque chargement de ta page, récupère les valeurs de ta select dans Request.Form et reconstruit ta select (tu peux donc ainsi désactiver le viewstate de ta select... normalement).

yopyop