Contenu d'un HTMLcontrol

theoorleans45 Messages postés 18 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 21 octobre 2006 - 23 août 2006 à 11:34
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 - 23 août 2006 à 13:48
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

cs_poppyto Messages postés 540 Date d'inscription dimanche 29 décembre 2002 Statut Modérateur Dernière intervention 13 mai 2011
23 août 2006 à 11:57
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>
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
23 août 2006 à 13:48
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
0
Rejoignez-nous