代码之家  ›  专栏  ›  技术社区  ›  Patrick Desjardins

ASP.NET向导控件,如何动态添加步骤?

  •  1
  • Patrick Desjardins  · 技术社区  · 14 年前

    代码隐藏:

    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">
    

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

    该步骤显示在左侧栏中,并带有标题,但该步骤中不显示HTML(字段集和段落)。它还需要是一个TemplatedWizardStep,因为我们对布局使用模板。如何动态添加步骤?

    1 回复  |  直到 14 年前
        1
  •  1
  •   ika    14 年前

    我不确定这样做是否是最好的做法,但它值得一提:

    Step1SerControl应实现ITemplate接口,

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

    然后只有它看起来像这样:

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