2010-05-07 3 views
0

J'ai un contrôle de l'assistant qui doit utiliser des étapes dynamiques. J'ai le code suivant qui charge les étapes dynamiques (tout fonctionne bien). J'ai 7 étapes statiques.Le contrôle de l'assistant Asp.net avec Dynamic Steps est bloqué

protected override LoadViewState(object savedState) 
{ 
    base.LoadViewState(savedState); 

    int offset = 4; 
    foreach(string stepName in this.ViewState["Steps"]) 
    { 
     WizardStep step = new WizardStep(); 
     step.Title = stepName; 
     this.Wizard1.WizardSteps.AddAt(step, offset); // LINE 1 
     this.Wizard1.WizardSteps.Add(step); // LINE 2 
     offset++; 
    } 
} 

J'ai deux questions, quand j'exécute le code et utiliser la ligne 1. Quand je suis à une étape dynamique, il ne vous laissera pas procedé à la suivante (en utilisant le bouton Suivant). Cela semble être parce que this.IsValid est faux (mais je n'ai aucun contrôle de validation sur la page). Il semble juste rester coincé sur cette page actuelle.

Lorsque je cours en utilisant la ligne 2, il ajoute les étapes à nouveau correctement. Lorsque je suis sur la première étape dynamique et cliquez sur Suivant, j'obtiens l'erreur. ActiveViewIndex est en cours de définition '7'. Il doit être plus petit que les contrôles de vue actuels '7'. Pour les vues ajoutées de manière dynamique, faites en sorte qu'elles soient ajoutées avant ou dans l'événement Page_PreInit.

Le problème avec la deuxième erreur est que je ne peux pas ajouter les étapes dynamiques dans Page_PreInit car j'ai besoin d'accéder à viewstate pour connaître le nombre d'étapes à dessiner.

Répondre

0

J'ai trouvé le problème. Son puisque les étapes doivent être ajoutées dans l'événement Page_PreInit. Ce qui signifie que je ne peux pas utiliser Viewstate mais j'utilise la Session à la place.