我有一个必须使用动态步骤的向导控件。我有以下代码加载动态步骤(这一切都正常)。我有7个静态步骤。
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++;
}
}
我有两个问题,当我执行代码并使用第1行时。当我进入动态步骤时,它将不允许您进入下一个(使用“下一步”按钮)。这似乎是因为this.IsValid是假的(但我在页面上没有验证控件)。它似乎陷入当前页面。
当我使用第2行运行时,它会再次添加步骤。当我在第一个动态步骤并单击下一步时,我收到错误。 ActiveViewIndex被设置为'7'。它必须小于当前视图控件'7'。对于动态添加的视图,请将它们添加到Page_PreInit事件之前或之中。
第二个错误的问题是我无法在Page_PreInit中添加动态步骤,因为我需要访问viewstate才能知道要绘制多少步骤。
答案 0 :(得分:0)
我发现了这个问题。因为必须在Page_PreInit事件中添加步骤。这意味着我不能使用Viewstate,但我现在正在使用Session。