Prb de viewstate

Signaler
Messages postés
53
Date d'inscription
mercredi 29 août 2007
Statut
Membre
Dernière intervention
31 mars 2010
-
Messages postés
53
Date d'inscription
mercredi 29 août 2007
Statut
Membre
Dernière intervention
31 mars 2010
-
Bonjour a tous,




Merci de ce pencher sur ce problème qui m'arrache les cheveux.

Ce message apparait lorsque mon datagrid est en mode edition et que je choisi de faire un update, cancel  ou un delete.
Pouvez m'aider a capturer l'exception a l'aide des try catch. Je ne vois pas tres bien a quel moment la capturer. Je cherche a identifier avec précision le control fautif.
 
Les solutions que j'ai vu sur internet consite a mettre le viewstate a false : il y a t il d'autre solutions.



Échec du chargement de viewstate. L'arborescence du contrôle sur lequel viewstate est chargé doit correspondre à l'arborescence du contrôle qui a été utilisé pour enregistrer viewstate lors de la demande précédente. Par exemple, lors de l'ajout dynamique de contrôle, les contrôles ajoutés lors d'une publication doivent correspondre au type et à la position des contrôles ajoutés lors de la demande initiale.



Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.Web.HttpException: Échec du chargement de viewstate. L'arborescence du contrôle sur lequel viewstate est chargé doit correspondre à l'arborescence du contrôle qui a été utilisé pour enregistrer viewstate lors de la demande précédente. Par exemple, lors de l'ajout dynamique de contrôle, les contrôles ajoutés lors d'une publication doivent correspondre au type et à la position des contrôles ajoutés lors de la demande initiale.

Erreur source:

Une exception non gérée s'est produite lors de l'exécution de la demande Web actuelle. Les informations relatives à l'origine et l'emplacement de l'exception peuvent être identifiées en utilisant la trace de la pile d'exception ci-dessous.


Trace de la pile:

[HttpException (0x80004005): Échec du chargement de viewstate.  L'arborescence du contrôle sur lequel viewstate est chargé doit correspondre à l'arborescence du contrôle qui a été utilisé pour enregistrer viewstate lors de la demande précédente.  Par exemple, lors de l'ajout dynamique de contrôle, les contrôles ajoutés lors d'une publication doivent correspondre au type et à la position des contrôles ajoutés lors de la demande initiale.]
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +189
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +414
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +414
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +414
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +414
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +414
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +414
System.Web.UI.Page.LoadPageViewState() +306
System.Web.UI.Page.ProcessRequestMain() +423

7 réponses

Messages postés
33
Date d'inscription
mardi 18 septembre 2007
Statut
Membre
Dernière intervention
27 septembre 2007

Salut Cipoli !
Lorsque tu passes en mode édition, la page est renvoyé au serveur et elle exécute donc le PageLoad, ton problème doit venir du
fait que tu modifies l'arborescence des controles lors de ton retour server ("edition grid view" par exemple).
Crées-tu des contrôles dans le PageLoad ou autre méthode ?
Messages postés
53
Date d'inscription
mercredi 29 août 2007
Statut
Membre
Dernière intervention
31 mars 2010

Merci tout d'abord de ton interet pour m'aider.








Je créer des controles dans le ItemDataBound en mode édition.

Dois je comprendre que je ne respecte pas l'affichage des controles, dans la bonne colonne du datagrid ?



Voici une parti de mon code




public



void
dtgSuggestBox_ItemDataBound(Object sender, DataGridItemEventArgs e){

else



if
(e.Item.ItemType == ListItemType.EditItem)

//Si en mode Edition du data grid






//Création des champs pour faire des saisies

TextBox txtEditCommentaire = (TextBox)e.Item.FindControl("txtEditCommentaire");


txtEditCommentaire.Text = drv["texte_forum"].ToString().Replace("
","\n");
Messages postés
53
Date d'inscription
mercredi 29 août 2007
Statut
Membre
Dernière intervention
31 mars 2010

Sur le site j'ai trouver une explication qui dit
Lorsque que je clic sur update ou cancel ou delete :

la page va se faire un postback, hop ca passe dans l'init,
puis ca recréer l'arborescence des controles,
il voit que la page vient d'un postback,
il regarde les controles qu'il a et il ne voit pas le controle .
Messages postés
33
Date d'inscription
mardi 18 septembre 2007
Statut
Membre
Dernière intervention
27 septembre 2007

Une page ASP.NET a un cycle de vie Cipoli, et passé un certain point de l'exécution
il est impossible de rajouter des controles avec ses évenements synchronisés en standard.

Essaye plutôt de faire :
((TextBox)e.Item.FindControl("txtEditCommentaire")).Text = drv["texte_forum"].ToString().Replace("
","\n"); ?
Messages postés
53
Date d'inscription
mercredi 29 août 2007
Statut
Membre
Dernière intervention
31 mars 2010

J'ai testé ton code malheureusement ça ne fonctionne pas, j'ai toujours la même erreur
Merci comme même
Messages postés
33
Date d'inscription
mardi 18 septembre 2007
Statut
Membre
Dernière intervention
27 septembre 2007

Vérifie que l'erreur se situe vraiment à cette ligne, essaye de l'isoler, et concernant la création des contrôles dynamiques,
Cyril a rapporté quelques liens interessant sur son blog
http://blogs.developpeur.org/cyril/archive/2007/09/18/ajout-de-controle-dynamique-dans-une-page-asp-net.aspx
En espèrant que cela fasse avancer ton problème.
Messages postés
53
Date d'inscription
mercredi 29 août 2007
Statut
Membre
Dernière intervention
31 mars 2010

Merci a tous j'ai résolu mon problème.

J'avais un datagrid qui était lié a mes données.
Mon erreur étais de créer une colonne dans le datagrid.