2009-07-22 26 views

Répondre

4

utilisation asp: Panel, qui correspond à un div.

19
Panel myChildPanel = new Panel(); 
myContainerPanel.Controls.Add(myChildPanel); 
6

Mis à part l'utilisation d'un panel comme ocdecio suggéré, il existe plusieurs autres possibilités.

  • Vous pouvez utiliser un aspic: contrôle Literal à l'intérieur du div et remplir ce avec prégénérée HTML
  • Ajouter un runat = « server » à la div lui-même et l'accès comme un HtmlGenericControl, en ajoutant d'autres contrôles à elle de votre codebehind.
  • utilisant <% = ...%>

Cela dépend un peu sur le niveau de contrôle dont vous avez besoin. Pourtant, dans la plupart des cas un, un groupe qui commence invisible serait le mieux:

<div>  
<asp:Panel Visible="false" id="MyPanel" runat="server"> 
</asp:Panel> 
</div> 

Ensuite, changez la visibilité de votre codebehind en cas de besoin. Un cas où vous pourriez vouloir utiliser l'une des autres méthodes est lorsque vous êtes coincé avec un fichier CSS qui assigne des styles basés sur l'ID. Dans ce cas, l'utilisation de contrôles .NET n'est pas vraiment une option. Mais vraiment, vous devriez claquer votre concepteur sur la tête et lui dire d'utiliser des noms de classe à la place.

25

// créer une nouvelle instance de div et définir toutes les valeurs comme l'ID Consultez l'exemple de code court. Il a travaillé pour moi de créer Divs dans une ajouter web

System.Web.UI.HtmlControls.HtmlGenericControl NewDiv = new 
    System.Web.UI.HtmlControls.HtmlGenericControl(); 
    NewDiv.ID = "divcreated"; 

ou

protected void Page_Load(object sender, EventArgs e) 
{ 
    System.Web.UI.HtmlControls.HtmlGenericControl createDiv = 
    new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");  
    createDiv.ID = "createDiv"; 
    createDiv.Style.Add(HtmlTextWriterStyle.BackgroundColor, "Yellow"); 
    createDiv.Style.Add(HtmlTextWriterStyle.Color, "Red"); 
    createDiv.Style.Add(HtmlTextWriterStyle.Height, "100px"); 
    createDiv.Style.Add(HtmlTextWriterStyle.Width, "400px"); 
    createDiv.InnerHtml = " I'm a div, from code behind "; 
    this.Controls.Add(createDiv); 
} 
+0

pour SharePoint pour moi travaillé: createDiv.Attributes.Add ("id", "createDiv"); –

+0

Réponse très utile merci, juste, comment l'ajoutez-vous à une autre div? cela fait partie de la question. – JCO9

0

Cela peut être une question très ancienne, mais je voudrais ajouter ma solution pour aider:

D'abord, à la "div" que vous avez déjà dans votre page (celle que vous voulez ajouter un autre "div" à) donne la propriété runat = "server" pour que vous puissiez y accéder à partir du code, cela ressemblerait à ceci:

<div id="superDIV" class="someCssClass" runat="server"></div> 

Ensuite, dans votre Page_Load() méthode ajouter ce qui suit:

protected void Page_Load(object sender, EventArgs e) 
{ 
    //We create our new div 
    System.Web.UI.HtmlControls.HtmlGenericControl newDiv = 
    new System.Web.UI.HtmlControls.HtmlGenericControl("DIV"); 
    newDiv.ID = "newSuperDIV"; //<---Give and ID to the div, very important! 
    newDiv.Style.Value = "background-color:white; height:61%;"; //<---Add some style as example 
    newDiv.Attributes.Add("class", "amazingCssClass"); //<---Apply a css class if wanted 
    superDiv.Controls.Add(newDiv); //<---Add the new div to our already existing div 
} 

Genearte votre div directement dans la fonction Page_Load il assurera qui existe après tout postback, éviter de générer à l'intérieur des blocs de code comme (! IsPostBack) {} sinon il n'existera pas dans votre page.