C# ASP.NET向导控件,如何动态添加步骤?
代码隐藏:C# ASP.NET向导控件,如何动态添加步骤?,c#,asp.net,c#-4.0,wizard,C#,Asp.net,C# 4.0,Wizard,代码隐藏: 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.
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">
步骤1UserControl.ascx标记:
<fieldset>
<legend>General Informations</legend>
<p>TEST DYNAMIC</p>
</fieldset>
一般资料
动态测试
步骤显示在标题的左侧栏中,但HTML(字段集和段落)不显示在步骤中。它也需要是TemplatedWizardStep,因为我们在布局中使用模板。如何动态添加步骤?我不确定这种方法是否是最佳做法,但它确实有效: 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);
}