Управление ASP.NET Wizard, как добавить шаг динамически? - PullRequest
1 голос
/ 21 октября 2010

Код-за:

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 Ответ

1 голос
/ 23 октября 2010

Я не уверен, что этот способ - лучшая практика, но он работает:

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