IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[VB.NET] Échec du chargement de viewstate


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut [VB.NET] Échec du chargement de viewstate
    Bonjour à tous et à toutes.

    Mon problème est le suivant. J'ai une liste déroulante qui me permet de choisir entre plusieurs types d'envoi (courrier, fax, mail). En fonction du choix sélectionné, je veux afficher un controle utilisateur différent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    ' Si un type a bien été choisi
    If DDL_Type_Courrier.SelectedValue <> "-1" Then
     
       ' Si le type de courrier choisi est : courrier ou fax
       If Convert.ToInt32(DDL_Type_Courrier.SelectedValue) = Constantes.Courrier Or Convert.ToInt32(DDL_Type_Courrier.SelectedValue) = Constantes.Fax Then
     
          ' On charge le formulaire de saisie d'un courrier papier
          MPapier = CType(LoadControl("MailingPapier.ascx"), MailingPapier)
          MPapier.TypeCourrier = Convert.ToInt32(DDL_Type_Courrier.SelectedValue)
          PH_Envoi.Controls.Add(MPapier)
     
       Else
     
          ' Sinon on charge le formulaire de saisie d'un courrier électronique
          MEmail = CType(LoadControl("MailingEmail.ascx"), MailingEmail)
          PH_Envoi.Controls.Add(MEmail)
     
       End If
     
    End If
    sachant que ph_envoi est un placeholder. Voilà ce que j'obtiens :

    - si je sélectionne courrier et après fax --> ok (note : c'est le même controle)
    - si je sélectionne courrier et après mail --> erreur
    - si je sélectionne mail et après courrier --> ok
    - si je sélectionne courrier, -1 et après mail --> ok

    et voici l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    É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.
    Je pense comprendre le problème ( ), ce que je comprends pas c'est pkoi l'erreur est déclenchée si je fais courrier et après mail, mais pas si je fais mail et après courrier, pourtant le controle utilisateur change dans les deux cas
    Enfin si qqu'un avait une solution à me proposer pour y remédier.

    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    J'ai du mal a voir pourquoi tu obtiens ce comportement (mail/courier différent de courier/mail) , par contre ce que je sais que ça vient de l'ordre des evenements dans ta page et de l'endroit ou tu ajoutes dynamiquement tes controles.

    L'evenement Page_Load ou tu crées tes controles (ou aprés) à lieu aprés le LoadViewState, et lorsque tu vas faire un PostBack sur ta page, les controles que tu avais précédemment créé dynamiquement n'existeront pas encore lors du LoadViewState, d'ou l'erreur qui indique que l'arborescence de tes controles ne coincide pas avec ce qu'il y a dans le viewstate. La solution : créer tes controles dynamiques avant le LoadViewState, dans l'Init par exemple. Cela dit, les controles dynamiques qui changent en fonction des saisies utilisateurs c'est un peu le bordel en asp.net, bon courage

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    salut j'ai mis le EnableViewState à false et maintenant ca marche.

    Merci pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/11/2014, 17h22
  2. Échec du chargement de viewstate.
    Par wayak3 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/02/2007, 10h55
  3. [VB.NET]Fin de chargement avec WebBrowser
    Par PM_calou dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/11/2006, 14h39
  4. [VB.net] Ecran de chargement
    Par Speranza dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/05/2006, 16h50
  5. [VB.NET] erreur de chargement d 'une DataGridView
    Par amazircool dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/04/2006, 17h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo