2010-10-21 100 views
1

代碼隱藏:ASP.NET嚮導控件,如何動態添加一個步驟?

public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     var t = new TemplatedWizardStep { Title = "Lalalal" }; 
     t.Controls.Add(new Step1UserControl()); 
     _WizardWebControl.WizardSteps.Add(t); 
     base.OnInit(e); 
    } 
} 

頁標記:

<asp:Wizard runat="server" id="_WizardWebControl"> 

Step1UserControl.ascx標記:

<fieldset> 
    <legend>General Informations</legend> 
    <p>TEST DYNAMIC</p>  
</fieldset> 

步驟顯示在與標題左邊欄,但HTML(字段和段落)不顯示在步驟中。它也需要成爲TemplatedWizardStep,因爲我們使用Template來佈局。如何動態添加步驟?

回答

1

我不知道,這種方式是最好的做法,但它wokrs:

Step1UserControl應該實現了Itemplate接口,

public void InstantiateIn(Control container) 
{ 
    container.Controls.Add(this); 
} 

,然後是OnInit可能看起來像這樣:

protected override void OnInit(EventArgs e) 
{ 
    TemplatedWizardStep templatedWizardStep = new TemplatedWizardStep { Title = "Lalalal" }; 

    // load control by path to initialize markup 
    ITemplate control = (ITemplate)Page.LoadControl("\\Step1UserControl.ascx");       

    templatedWizardStep.ContentTemplate = control;    
    wizard.WizardSteps.Add(templatedWizardStep); 

    // make it visible 
    wizard.MoveTo(templatedWizardStep); 
    base.OnInit(e); 
} 
+1

@abatishchev:請不要將類名更改爲var,如果是粗言穢語,則不要使用變量名 – ika 2010-10-23 10:33:25