【问题标题】:ASP.NET Wizard control, how to add a step dynamically?ASP.NET Wizard控件,如何动态添加一个步骤?
【发布时间】:2011-04-28 18:02:09
【问题描述】:

代码隐藏:

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 进行布局。如何动态添加 Step?

【问题讨论】:

    标签: c# asp.net c#-4.0 wizard


    【解决方案1】:

    我不确定这种方式是否是最佳做法,但它确实有效:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 2022-11-06
      相关资源
      最近更新 更多