2009-05-07 7 views
0

J'ai un contrôle d'assistant ASP.NET où je boucle en arrière, wiz.MoveTo(wiz.WizardSteps[0]), à la première étape de l'assistant dans le gestionnaire d'événements FinishButtonClick.Assistant ASP.Net - Comment effacer le contenu des contrôles Web

Puis-je également effacer tout le contenu pour tous les contrôles dans les étapes?

Le problème est que, à cause de viewstate, les contrôles dans les étapes de l'assistant se souviennent de leurs valeurs de la soumission précédente?

Je ne peux pas utiliser enableviewstate = false sur les contrôles car ils doivent pouvoir se souvenir de leur état (aller et retour) entre les étapes?

Quelle est la manière la plus simple d'effacer l'état d'affichage de tous les contrôles uniquement lorsque l'événement FinishButtonClick se produit?

Merci!

+0

Désolé, ViewState n'est pas responsable du stockage des valeurs modifiées pour les contrôles tels que les TextBox, les listes déroulantes, les CheckBox qui héritent de l'interface IPostBackDataHandler. L'événement LoadPostBackData se déclenche, dans lequel les valeurs de ces contrôles proviennent des en-têtes HTTP POST ... – Konrad

Répondre

2

Y a-t-il quelque chose qui ne devrait pas être effacé? Si ce n'est pas le cas, la solution la plus simple est probablement de placer une redirection dans le gestionnaire d'événements click pour que tout soit réinitialisé.

+0

Merci Tom, je viens de tomber sur la même solution ... Après avoir mieux compris le problème. ;) – Konrad

1

Résolu. ViewState n'est pas responsable du stockage des valeurs modifiées pour les contrôles tels que TextBoxes, DropDowns, CheckBoxes etc. Ces contrôles héritent de l'interface IPostBackDataHandler. L'événement LoadPostBackData se déclenche dans le cycle de vie de la page, dans lequel les valeurs des contrôles se chargent à partir des en-têtes HTTP POST de formulaire ... qui sont resoumises par le client ...

Alors comment détruire les en-têtes HTTP POST pour effacer le contrôler les valeurs?

Une nouvelle demande résulte dans les nouvelles HTTP POST-têtes ... Je fais simplement ce dans le gestionnaire d'événements FinishButtonClick:

HttpContext.Current.Response.Redirect(Page.Request.Url.ToString()); 

Cela a l'avantage supplémentaire qu'il passe à l'étape 1 de l'assistant, donc je aussi ne pas avoir à faire ... wiz.MoveTo(wiz.WizardSteps[0]).

Espérons que cela aidera quelqu'un avec le même problème.

Questions connexes