2012-05-08 3 views
3

Je crée un contrôle d'assistant à partir du codebehind en fonction de certaines conditions de la base de données. Je dois appliquer le modèle de disposition du code. J'ai vérifié l'exemple MS, tout est basé sur le temps de conception, pas au moment de l'exécution.Définition du modèle de disposition de l'assistant

Aidez-moi à définir le modèle de mise en page pour le contrôle de l'assistant asp.net. De préférence quelques exemples de code.

Mise à jour:

Je pense que je suis un peu plus élaborée. En fait, je ne vois pas les contrôles de l'assistant que j'ai ajoutés à partir du modèle. Voici mon exemple de code

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

Je le fais à la page init. Je ne vois pas les contrôles que j'ai créés dedans. Vous vous demandez ce qui ne va pas ici.

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

Finalement, je ne voudrais l'assistant pour utiliser la mise en page ci-dessous, mais dans le code

<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> 

Répondre

2

Ici, vous allez:

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

myWizard.LayoutTemplate = new WizardLayoutTemplate(); 
Questions connexes