Prb de viewstate

Cipoli Messages postés 53 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 31 mars 2010 - 27 sept. 2007 à 10:27
Cipoli Messages postés 53 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 31 mars 2010 - 1 oct. 2007 à 15:11
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

David REI Messages postés 33 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 27 septembre 2007
27 sept. 2007 à 11:10
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 ?
0
Cipoli Messages postés 53 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 31 mars 2010
27 sept. 2007 à 11:51
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");
0
Cipoli Messages postés 53 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 31 mars 2010
27 sept. 2007 à 12:10
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 .
0
David REI Messages postés 33 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 27 septembre 2007
27 sept. 2007 à 12:16
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"); ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cipoli Messages postés 53 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 31 mars 2010
27 sept. 2007 à 12:35
J'ai testé ton code malheureusement ça ne fonctionne pas, j'ai toujours la même erreur
Merci comme même
0
David REI Messages postés 33 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 27 septembre 2007
27 sept. 2007 à 13:47
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.
0
Cipoli Messages postés 53 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 31 mars 2010
1 oct. 2007 à 15:11
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.
0
Rejoignez-nous