2014-10-27 51 views
0

我需要知道这是否可能,我有一个向导,并且当我步骤5时我需要更改从下一个按钮到结束按钮,因为完成步骤的向导没有显示步骤,我需要它显示,所以我想出了一种方法来做事情,但我需要一个按钮变成可见,当它到达第5步,但问题是,它必须完成activeStepChanged(我认为)。asp.net向导activestepchange下一步按钮更改验证组

这里是代码:

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> 

谢谢你这么远。

+0

你的第二个例子应该找到控制。你有没有机会进入MasterPage?有一个可以从CodingHorror获得的递归FindControl,它可以在MasterPage中工作.http://blog.codinghorror.com/recursive-pagefindcontrol/ – Tim 2014-10-27 12:12:22

+0

我使用的是普通的aspx页面,我没有这个母版页项目,我正在提交一个表单提交到数据库,所以它无论如何不能在母版页 – 2014-10-27 12:15:01

+0

您的完成按钮ID“btnFinishButton”或“FinishButton”?我打赌你的身份证已关闭。 – Tim 2014-10-27 12:17:07

回答

0

我找到了解决方案,实际上它非常简单,因为我在ActiveStepIndex被定义(预渲染)之前试图调用按钮,所以无法找到它(正常的,因为它甚至没有创建) ,所以经过多次尝试和1日上午的搜索和测试,我tryed把它在开关的情况后发现,所以对于那些谁也可能有这样的困难,这里是功能代码:

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; 
    } 
}