2009-07-22 3 views
16

ASP.NET, C#wie hinter

ein div zu div-Container in C# Code hinzufügen Wie der Titel einen Container wußte, wie man programmatisch ein div zu einem anderen (# -Code hinter Datei c) hinzufügen, ich habe mich gefragt, ob jemand schlägt vor, div (in der Aspx-Seite).

Vielen Dank im Voraus

Antwort

4

Verwendung asp: Panel, die zu einem div abbildet.

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

Abgesehen von der Verwendung eines Panel wie ocdecio vorgeschlagen, gibt es mehrere andere Möglichkeiten

  • können Sie eine ASP verwenden: Wörtliche Kontrolle innerhalb des div und füllen das mit vorgenerierte HTML
  • hinzufügen runat = „server“, um die div selbst und Zugang es als Htmlgenericcontrol und fügte hinzu, andere Steuerelemente aus dein Codebehind.
  • Mit <% = ...%>

Es hängt ein wenig auf der Ebene der Kontrolle, die Sie benötigen.

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

Dann die Sichtbarkeit von Ihrem Code-Behind ändern, wenn nötig: Noch ein Panel unter einem den meisten Fällen, die am besten wäre unsichtbar beginnt.

Eine Fälle, in denen Sie eine der anderen Methoden verwenden möchten, wenn Sie mit einigen CSS-Datei stecken, die Stile basierend auf ID zuweist. In diesem Fall ist die Verwendung von .NET-Steuerelementen nicht wirklich eine Option. Aber eigentlich solltest du deinen Designer über den Kopf schlagen und ihm sagen, dass er stattdessen Klassennamen verwenden soll.

25

// neue Instanz von div erstellen und alle Werte wie die ID Schauen Sie sich die kurze Code-Beispiel. Er arbeitete für mich zu erstellen Divs in einem Web hinzufügen

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

oder

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

für SharePoint für mich gearbeitet: createDiv.Attributes.Add ("id", "createDiv"); –

+0

Sehr nützliche Antwort, danke, wie fügen Sie es zu einem anderen div hinzu? Das ist Teil der Frage. – JCO9

0

Dies ist eine sehr alte Frage sein, aber ich möchte meine Lösung hinzufügen zu helfen:

Erstens auf die „div“ haben Sie bereits in Ihrer Seite (die Sie einen anderen „div“, um hinzuzufügen) geben die runat = „server“ Eigenschaft, damit Sie es aus dem Code hinter zugreifen können, es würde wie folgt aussehen:

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

Dann in Ihrem Page_Load() -Methode fügen Sie folgendes:

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 Ihre div direkt in der Page_Load Funktion so, dass existiert nach jeder Postbacks versichern wird, vermeiden Sie es in Codeblöcke wie Erzeugen (! IsPostBack) {} andernfalls ist es nicht auf Ihrer Seite vorhanden.