asp.net向导activestepchangenext按钮更改验证组

本文关键字:验证 按钮 net 向导 activestepchangenext asp | 更新日期: 2023-09-27 18:27:54

我需要知道这是否可能,我有一个向导,当我进入第5步时,我需要将按钮从"下一步"更改为"完成"按钮,因为向导的"完成"步骤没有显示步骤,我需要它显示,所以我想办法做一些事情,但我需要一个按钮在到达第5步后变为可见,但问题是它必须在activeStepChanged上完成(我认为)。

这是代码:

protected void wizard1_ActiveStepChanged ( object sender, EventArgs e ) {
    ((Button)(wizard1.FindControl("StepNavigationTemplate$btnNext"))).Visible = true;
    ((Button)(wizard1.FindControl("StepNavigationTemplate$btnFinish"))).Visible = false;
    switch(wizard1.ActiveStepIndex) {
        case 1:
            wizard1.MoveTo(WizardStep2);
            break;
        case 2:
            wizard1.MoveTo(WizardStep3);
            break;
        case 3:
            wizard1.MoveTo(WizardStep4);
            break;
        case 4:
            wizard1.MoveTo(WizardStep5);
            ((Button)(wizard1.FindControl("StartNavigationTemplateContainerID$btnNext"))).Visible = false;
            ((Button)(wizard1.FindControl("StartNavigationTemplateContainerID$btnFinish"))).Visible = true;
            break;
        case 5:
            wizard1.MoveTo(WizardStep6);
            break;
    }
}

这样做可能吗?因为当我运行代码时,它说按钮为空,我尝试了其他方法,比如:

protected void wizard1_ActiveStepChanged ( object sender, EventArgs e ) {
    Button btnNext = (Button)wizard1.FindControl("btnNext");
    Button btnFinish = (Button)wizard1.FindControl("btnFinish");
    btnNext.Visible = true;
    btnFinish.Visible = false;
    switch(wizard1.ActiveStepIndex) {
        case 1:
            wizard1.MoveTo(WizardStep2);
            break;
        case 2:
            wizard1.MoveTo(WizardStep3);
            break;
        case 3:
            wizard1.MoveTo(WizardStep4);
            break;
        case 4:
            wizard1.MoveTo(WizardStep5);
            btnNext.Visible = false;
            btnFinish.Visible = true;
            break;
        case 5:
            wizard1.MoveTo(WizardStep6);
            break;
    }
}

但它总是告诉我按钮为空,有什么方法可以在ActiveStepChanged上抓住按钮吗?如果没有,我有什么替代方案可以让它发挥作用?

这是按钮代码:

<StartNavigationTemplate>
    <asp:Button ID="StartNextButton" runat="server" CommandName="MoveNext" Text="SEGUINTE" CssClass="wizard-nav-buttons" ValidationGroup="valReg" CausesValidation="true" />
</StartNavigationTemplate>
<StepNavigationTemplate>
    <div style="display: table-cell;">
        <asp:Button ID="btnPrevious" runat="server" Text="ANTERIOR" CommandName="MovePrevious" CausesValidation="true" CssClass="wizard-nav-buttons prev" />
    </div>
    <div style="display: table-cell; padding-left: 10px;">
        <asp:Button ID="btnNext" runat="server" CommandName="MoveNext" Text="SEGUINTE" CausesValidation="true" CssClass="wizard-nav-buttons" />
    </div>
    <div style="display: table-cell; padding-left: 10px;">
        <asp:Button ID="btnFinish" runat="server" OnClick="wizard1_FinishButtonClick" Text="SUBMETER PROPOSTA" CssClass="wizard-nav-buttons submeterProposta" CausesValidation="true" Visible="false" />
    </div>
</StepNavigationTemplate>
<FinishNavigationTemplate></FinishNavigationTemplate>

到目前为止谢谢你。

asp.net向导activestepchangenext按钮更改验证组

我找到了解决方案,实际上它非常简单,因为我试图在ActiveStepIndex定义(预渲染)之前调用按钮,但找不到它(正常,因为它甚至没有创建),所以经过几次尝试和1个上午的搜索和测试,我试图将它放在交换机中的一个案例之后,它被找到了,因此,对于那些可能有这种困难的人来说,这里是功能代码:

protected void wizard1_ActiveStepChanged ( object sender, EventArgs e ) {
    Button btnNext , btnFinish;
    switch(wizard1.ActiveStepIndex) {
        case 1:
            btnNext = (Button)wizard1.FindControl("StepNavigationTemplateContainerID").FindControl("btnNext");
            btnFinish = (Button)wizard1.FindControl("StepNavigationTemplateContainerID").FindControl("btnFinish");
            btnNext.ValidationGroup = "valAutUniq";
            btnNext.Visible = true;
            btnFinish.Visible = false;
            wizard1.MoveTo(WizardStep2);
            break;
        case 2:
            btnNext = (Button)wizard1.FindControl("StepNavigationTemplateContainerID").FindControl("btnNext");
            btnFinish = (Button)wizard1.FindControl("StepNavigationTemplateContainerID").FindControl("btnFinish");
            btnNext.ValidationGroup = "valAutUniq";
            btnNext.Visible = true;
            btnFinish.Visible = false;
            wizard1.MoveTo(WizardStep3);
            break;
        case 3:
            btnNext = (Button)wizard1.FindControl("StepNavigationTemplateContainerID").FindControl("btnNext");
            btnFinish = (Button)wizard1.FindControl("StepNavigationTemplateContainerID").FindControl("btnFinish");
            btnNext.ValidationGroup = "valFormPag";
            btnNext.Visible = true;
            btnFinish.Visible = false;
            wizard1.MoveTo(WizardStep4);
            break;
        case 4:
            btnNext = (Button)wizard1.FindControl("StepNavigationTemplateContainerID").FindControl("btnNext");
            btnFinish = (Button)wizard1.FindControl("StepNavigationTemplateContainerID").FindControl("btnFinish");
            btnNext.ValidationGroup = null;
            btnNext.Visible = false;
            btnFinish.Visible = true;
            wizard1.MoveTo(WizardStep5);
            break;
    }
}