2 votes

Les valeurs de la listbox persistent à travers les postbacks

Je possède une liste dans ASP.net. Je remplis les valeurs de la liste à partir d'une autre liste sur une page de manière dynamique. Lors des postbacks, les valeurs de la liste de sortie ne sont pas conservées (en passant à une autre page et en revenant sur cette page).

Veuillez suggérer une bonne réponse. EnableViewstate = "true" ne fonctionne pas.

3voto

Lou Franco Points 48823

Faites-vous quelque chose dans Page_Load qui devrait être dans un

if(!IsPostBack) {}

Le code d'initialisation dans load ne doit être appelé que lorsque la page est chargée pour la première fois, pas lors des postbacks.

Si vous vous rendez sur une autre page et que vous revenez sur cette page, je pense que vous devez préserver les informations vous-même dans la Session et les restaurer lorsque vous revenez sur la page.

1voto

dvorak Points 101

La vue d'état est conservée uniquement tant que vous êtes sur la même page en effectuant des postbacks. Comme l'a écrit Lou Franco

if(!IsPostBack) {}

Vous utilisez ceci lors de la requête initiale de la page pour remplir les données. Si vous souhaitez conserver les données entre les pages, utiliser la session pour stocker les valeurs est le meilleur choix.

Idéalement, vous remplissez les données dans votre liste déroulante avant l'événement SaveViewState qui se trouve dans PreInit autant que je me souvienne.

0voto

Jason Whitehorn Points 5304

Initialisez le contenu de vos contrôles dans l'événement Init de votre Page (Page_Init). De cette façon, les valeurs fournies par l'utilisateur ne sont pas écrasées par vos valeurs par défaut.

0voto

stevemegson Points 6741

EnableViewState ne fera que repeupler la liste de sortie avec les valeurs qu'elle avait lorsque la page a été rendue pour la première fois, car ce sont toujours celles stockées dans l'état de vue. Le navigateur envoie uniquement la valeur sélectionnée lors du postback, donc il n'y a aucun moyen pour le serveur de savoir quelles autres valeurs vous avez ajoutées sur le client.

Vous pouvez contourner cela en ajoutant une entrée cachée à la page et en la peuplant avec les valeurs dynamiques lorsque vous mettez à jour la liste. Votre page peut ensuite vérifier cette valeur lors d'un postback et repeupler correctement la liste.

0voto

user512374 Points 11

Les modifications apportées à la liste déroulante côté client ne sont pas persistées lors d'un postback, vous devez enregistrer ces informations dans des champs cachés, puis configurer le contrôle lors de l'événement page_load pour que les modifications restent lors du reste du postback.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X