web-dev-qa-db-fra.com

comment ajouter un div au conteneur div en code c # derrière

ASP.NET, C #

Comme le titre l'indique, je me demandais si quelqu'un savait comment programmer (code c # derrière le fichier) ajouter un div à un autre div de conteneur (dans la page aspx).

Merci d'avance

21
ErnieStings

// crée une nouvelle instance de div et définit toutes les valeurs comme l'ID Consultez l'exemple de code court. Cela a fonctionné pour moi de créer des Divs dans un site 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);
}
30
Jacob O'Brien
Panel myChildPanel = new Panel();
myContainerPanel.Controls.Add(myChildPanel);
19
Matthew Vines

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

  • Vous pouvez utiliser un contrôle asp: Literal à l'intérieur du div et le remplir avec du HTML pré-généré
  • Ajoutez un runat = "server" au div lui-même et accédez-y en tant que HtmlGenericControl, en y ajoutant d'autres contrôles depuis votre codebehind.
  • Utilisation de <% = ...%>

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

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

Modifiez ensuite la visibilité de votre code lorsque vous en avez besoin.

Un cas où vous voudrez peut-être utiliser l'une des autres méthodes est lorsque vous êtes coincé avec un fichier CSS qui attribue des styles en fonction de l'ID. Dans ce cas, l'utilisation des contrôles .NET n'est pas vraiment une option. Mais vraiment, vous devriez frapper votre concepteur par dessus la tête et lui dire d'utiliser des noms de classe à la place.

6
Thorarin

Utilisez asp: Panel, qui correspond à une div.

4
Otávio Décio

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

Tout d'abord, pour le "div" que vous avez déjà dans votre page (celui auquel vous voulez ajouter un autre "div"), donnez la propriété runat = "server" afin que vous puissiez y accéder à partir du code derrière, cela ressemblerait à ceci:

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

Ensuite, dans votre méthode▶Load (), ajoutez 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
}

Générez votre div directement à l'intérieur de la fonction ▶Load afin de garantir qu'il existe après toute publication, évitez de le générer dans des blocs de code comme (!! IsPostBack) {} sinon il n'existera pas dans votre page.

1
JCO9