2012-05-08 1 views
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> 

答えて

2

ここに行く使いたいでしょう:

public class WizardLayoutTemplate : ITemplate 
{ 
    public void InstantiateIn(Control container) 
    { 
    // do some cool stuff here with the container control 
    } 
} 

myWizard.LayoutTemplate = new WizardLayoutTemplate();