2014-10-27 48 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; 
    } 
}