как да добавите div към контейнер div в c# код отзад

ASP.NET, C#

Както подсказва заглавието, чудех се дали някой знае как програмно (c# код зад файл) да добави div към друг контейнер div (в aspx страницата).

Благодаря предварително


person ErnieStings    schedule 22.07.2009    source източник


Отговори (4)


//създайте нов екземпляр на div и задайте всички стойности като ID Вижте краткия пример за код. За мен проработи създаването на Divs в уеб добавка

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

or

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);
}
person Jacob O'Brien    schedule 30.05.2012
comment
за SharePoint за мен работи: createDiv.Attributes.Add(id, createDiv); - person Gennady G; 06.10.2016
comment
Много полезен отговор благодаря, просто как го добавяте към друг div? това е част от въпроса. - person JCO9; 24.11.2016

Освен използването на панел като предложения от ocdecio, има няколко други възможности.

  • Можете да използвате контрола asp:Literal вътре в div и да го попълните с предварително генериран HTML
  • Добавете runat="сървър" към самия div и го осъществете като HtmlGenericControl, като добавите други контроли към него от вашия код отзад.
  • Използване на ‹%= ... %>

Зависи малко от нивото на контрол, от което се нуждаете. И все пак, при повечето обстоятелства панел, който започва да е невидим, би бил най-добрият:

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

След това променете видимостта от задния код, когато е необходимо.

Един от случаите, в които може да искате да използвате един от другите методи, е когато сте заседнали с някакъв CSS файл, който присвоява стилове въз основа на ID. В такъв случай използването на .NET контроли всъщност не е опция. Но наистина трябва да ударите своя дизайнер по главата и да му кажете да използва имена на класове вместо това.

person Thorarin    schedule 22.07.2009
comment
Какви са плюсовете и минусите на Panel срещу Literal срещу div с runat=server? - person Dov Miller; 31.10.2018

Използвайте asp:Panel, който се свързва с div.

person Otávio Décio    schedule 22.07.2009

Това може да е много стар въпрос, но бих искал да добавя моето решение за помощ:

Първо, на „div“, който вече имате във вашата страница (тази, към която искате да добавите друг „div“), дайте свойството runat="server", за да можете да получите достъп до него от задния код, ще изглежда така:

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

След това във вашия метод Page_Load() добавете следното:

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
}

Генерирайте своя div директно във функцията Page_Load, така че да гарантира, че съществува след всяко обратно изпращане, избягвайте да го генерирате в кодови блокове като (!IsPostBack){}, в противен случай той няма да съществува във вашата страница.

person JCO9    schedule 24.11.2016