theoorleans45
Messages postés18Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention21 octobre 2006
-
23 août 2006 à 11:34
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 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 ! ) ?
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 février 20101 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).