2011-11-25 109 views
2

我在頁面上有一個嚮導,它有一個「下一步」按鈕。我想在單擊頁面上的另一個按鈕時從代碼隱藏中「單擊」該按鈕。從ASP.NET代碼隱藏推進嚮導

更具體地說: 我的頁面上有一個按鈕,它有兩個功能:點擊後,在回發中,它會設置重新加載頁面所需的代碼並顯示一個彈出窗口,或者如果嚮導它認爲彈出窗口是不必要的。如果彈出顯示,它包含一個按鈕來推進嚮導。

一些代碼片段:

嚮導初始化:

<asp:Wizard ID="RegistrationWizard" meta:resourcekey="RegistrationWizard" 
    runat="server" OnFinishButtonClick="RegistrationWizard_FinishButtonClick" 
    OnActiveStepChanged="RegistrationWizard_ActiveStepChanged" 
    OnNextButtonClick="RegistrationWizard_NextButtonClick"> 

按鈕,顯示彈出窗口或提前:

<asp:Button ID="btnModulesNextPostBack" runat="server" CssClass="submit rounded" 
    meta:resourcekey="btnNext" onclick="btnModulesNextPostBack_Click" /> 

按鈕進入嚮導:

<asp:Button ID="btnModulesStepNext" runat="server" CssClass="submit rounded" 
    meta:resourcekey="btnNext" CommandName="MoveNext" /> 

代碼 - t之後他btnModulesNextPostBack_Click方法:

protected void btnModulesNextPostBack_Click(object sender, EventArgs e) 
{ 
    showPopup = false; // if set to true: will open popup in postback 
    // ... code to determine if popup should be shown 
    if (!showNewsletterPopup) 
    { 
     // TODO! trigger "move to next step in wizard" 
    } 
} 

我不知道該怎麼在TODO線的地方,因爲我想,以確保有關嚮導中的所有其他方法被調用以相同的順序照常太(RegistrationWizard_NextButtonClick和RegistrationWizard_ActiveStepChanged和其他人的內部嚮導代碼調用)。

我該怎麼做? (.NET版本是4.0)

+0

您是否可以移動代碼以確定是否應該向客戶端顯示彈出窗口? –

+0

@YuriyRozhovetskiy不是真的:( – Tominator

回答

8

你應該能夠只是遞增ActiveStepIndex

Wizard1.ActiveStepIndex++; 

您也可以使用MoveTo方法:

Wizard1.MoveTo(WizardStep1); 

最後,如果你想瀏覽嚮導向前和向後,你可以使用NextButtonClickPreviousButtonClick

protected void wzServiceOrder_PreviousButtonClicked(object sender, WizardNavigationEventArgs e) 
{ 
    //decrement the active step index 
    wzServiceOrder.ActiveStepIndex--; 

    //move the wizard to the active step 
    wzServiceOrder.MoveTo(wzServiceOrder.ActiveStep);       
} 

/// <summary> 
/// Handles wzServiceOrder OnNextButtonClick event. 
/// </summary> 
/// <param name="sender"></param> 
/// <param name="e"></param> 
protected void wzServiceOrder_NextButtonClicked(object sender, WizardNavigationEventArgs e) 
{ 
    //increment the active step index 
    Wizard1.ActiveStepIndex++; 

    //move the wizard to the active step 
    Wizard1.MoveTo(Wizard1.ActiveStep); 

    if (e.NextStepIndex > Wizard1.WizardSteps.IndexOf(WizardStep1)) 
    { 
     if (!contactsExist) 
     { 
      Popop1.Show(); 
      e.Cancel = true; 
     } 
    } 
} 
+0

謝謝,這是一個正確的方向,但方法「RegistrationWizard_NextButtonClick」不會被調用了(只有「RegistrationWizard_ActiveStepChanged」)。我有一些代碼在那裏,我想有(但我將不得不構建WizardNavigationEventArgs對象,它有點煩人,要找出它是如何工作的) – Tominator

+0

您是否在標記中指定了「NextButtonClick」的事件處理程序?:'NextButtonClick =「Wizard1_NextButtonClick」 –

+0

是的,它是:OnNextButtonClick =「RegistrationWizard_NextButtonClick」,但我懷疑嚮導沒有得到下一個按鈕單擊事件 – Tominator