3
データベースのいくつかの条件に基づいてコードビハインドからウィザードコントロールを作成しています。私は、コードからレイアウトテンプレートを適用する必要があります。私はMSの例をチェックしました。そのすべては、実行時ではなく、設計時に基づいています。ウィザードレイアウトテンプレートをプログラムで設定する
asp.netウィザードコントロールのレイアウトテンプレートを設定してください。好ましくはいくつかのコード例。
更新:
私はもう少し精巧されているべきだと思います。実際には、テンプレートから追加したウィザードのコントロールが表示されません。ここに私のサンプルコードがあります
public class WizardTemplate:ITemplate
{
public void InstantiateIn(Control container)
{
PlaceHolder header = new PlaceHolder();
header.Controls.Add(new LiteralControl("I am from Header"));
header.ID = Wizard.HeaderPlaceholderId;
PlaceHolder displaySideBar = new PlaceHolder();
displaySideBar.Controls.Add(new LiteralControl("I am from displaySideBar"));
displaySideBar.ID = Wizard.SideBarPlaceholderId;
PlaceHolder wizardStep = new PlaceHolder();
wizardStep.Controls.Add(new LiteralControl("I am from wizard step"));
wizardStep.ID = Wizard.WizardStepPlaceholderId;
PlaceHolder navigation = new PlaceHolder();
navigation.ID = Wizard.NavigationPlaceholderId;
container.Controls.Add(header);
container.Controls.Add(displaySideBar);
container.Controls.Add(wizardStep);
container.Controls.Add(navigation);
}
}
私はこれをページinitで行います。私はそれで作成したコントロールを見ません。ここで何がうまくいかないのだろうか?
Wizard testWizard = new Wizard();
testWizard.LayoutTemplate = new WizardTemplate();
for (int i = 0; i < 4; i++)
{
WizardStep step = new WizardStep();
step.Title = "Step" + i.ToString();
step.ID = "Step" + i.ToString();
step.Controls.Add(new LiteralControl("<b> Step" + i.ToString() + "</b>"));
testWizard.WizardSteps.Add(step);
}
pnlRunTimeWizardContainer.Controls.Add(testWizard);
結局私は、ウィザードは、レイアウトを下回るが、コードに
<asp:Wizard ID="Wizard1" runat="server" EnableViewState="true">
<LayoutTemplate>
<div>
<asp:PlaceHolder ID="headerPlaceHolder" runat="server" />
</div>
<div style="float: right">
<asp:PlaceHolder ID="navigationPlaceHolder" runat="server" />
</div>
<div>
<asp:PlaceHolder ID="sideBarPlaceHolder" runat="server" />
</div>
<div>
<asp:PlaceHolder ID="WizardStepPlaceHolder" runat="server" />
</div>
</LayoutTemplate>
<WizardSteps>
</WizardSteps>
</asp:Wizard>