2009-07-22 11 views

risposta

4

Usa asp: Panel, che associa ad un div.

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

Oltre a utilizzare un pannello come ocdecio suggerito, ci sono molte altre possibilità.

  • È possibile utilizzare un asp: controllo Literal all'interno del div e riempire che, con pregenerato HTML
  • Aggiungi un runat = "server" al div stesso e l'accesso come un HtmlGenericControl, aggiungendo altri comandi ad esso da il tuo codicebehind.
  • Utilizzando <% = ...%>

Dipende un po 'sul livello di controllo necessario. Eppure, in un maggior parte dei casi, un pannello che inizia invisibile sarebbe meglio:

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

quindi modificare la visibilità dal codebehind quando necessario.

Uno dei casi in cui si potrebbe voler utilizzare uno degli altri metodi è quando si è bloccati con un file CSS che assegna gli stili in base all'ID. In tal caso, l'utilizzo di controlli .NET non è davvero un'opzione. Ma davvero, dovresti colpire il tuo progettista in testa e dirgli di usare invece i nomi delle classi.

25

// crea una nuova istanza di div e imposta tutti i valori come l'ID Controlla l'esempio di codice breve. Ha funzionato per me per creare div in un Web Aggiungi

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

o

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

per SharePoint per me ha funzionato: createDiv.Attributes.Add ("id", "createDiv"); –

+0

Risposta molto utile, grazie, come lo aggiungi ad un altro div? questa è parte della domanda. – JCO9

0

Questa può essere una domanda molto vecchio, ma vorrei aggiungere la mia soluzione per aiutare:

In primo luogo, al "div" che hai già nella tua pagina (quello a cui vuoi aggiungere un altro "div") attribuisci la proprietà runat = "server" così puoi accedervi dal codice sottostante, assomiglierebbe a questo:

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

Poi metodo nel Page_Load() aggiungere il seguente:

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 div direttamente all'interno della funzione Load così assicurerà che esiste dopo ogni postback, evitare di generare all'interno dei blocchi di codice come (! IsPostBack) {} altrimenti non esisterà nella tua pagina.

Problemi correlati