2009-05-06 26 views
16

Este es el código de abajo en el código detrás evento del archivo Page_Load:Cómo crear saltos de línea entre etiquetas generadas dinámicamente en un marcador de posición?

 LinkButton linkButton = new LinkButton(); 
     linkButton.ID = "LinkButtonDynamicInPlaceHolder1Id" + i; 
     linkButton.ForeColor = Color.Blue; 
     linkButton.Font.Bold = true; 
     linkButton.Font.Size = 14; 
     linkButton.Font.Underline = false; 
     linkButton.Text = itemList[i].ItemTitle.InnerText; 
     linkButton.Click += new EventHandler(LinkButton_Click); 
     linkButton.Attributes.Add("LinkUrl",itemList[i].ItemLink.InnerText); 
     PlaceHolder1.Controls.Add(linkButton); 
     Label label = new Label(); 
     label.ID = "LabelDynamicInPlaceHolder1Id" + i; 
     label.ForeColor = Color.DarkGray; 
     label.Text = itemList[i].ItemDescription.InnerText; 
     PlaceHolder1.Controls.Add(label); 

Quiero un salto de línea entre cada control generada.

Respuesta

39

La solución a su problema de salto de línea está abajo; sin embargo, si está haciendo esto en el evento Page_Load, sus controladores de eventos no funcionarán y se encontrará con problemas del ciclo de vida de la página. Básicamente, para que los controladores de eventos activen PostBack, realmente necesita crear estos controles dinámicos más temprano en el ciclo de vida de la página. Intente mover su código al método OnInit si se encuentra con este problema.

LinkButton linkButton = new LinkButton(); 
    linkButton.ID = "LinkButtonDynamicInPlaceHolder1Id" + i; 
    linkButton.ForeColor = Color.Blue; 
    linkButton.Font.Bold = true; 
    linkButton.Font.Size = 14; 
    linkButton.Font.Underline = false; 
    linkButton.Text = itemList[i].ItemTitle.InnerText; 
    linkButton.Click += new EventHandler(LinkButton_Click); 
    linkButton.Attributes.Add("LinkUrl",itemList[i].ItemLink.InnerText); 
    PlaceHolder1.Controls.Add(linkButton); 

    //Add This 
    PlaceHolder1.Controls.Add(new LiteralControl("<br />")); 


    Label label = new Label(); 
    label.ID = "LabelDynamicInPlaceHolder1Id" + i; 
    label.ForeColor = Color.DarkGray; 
    label.Text = itemList[i].ItemDescription.InnerText; 
    PlaceHolder1.Controls.Add(label); 
1

How to: Add Controls to an ASP.NET Web Page Programmatically

En algunos casos, es posible que desee crear tanto texto estático y controles. Para crear texto estático, puede usar un servidor web literal o de etiqueta control. A continuación, puede agregar estos controles al contenedor como lo haría con cualquier otro control. Para obtener información sobre el estado de vista en los controles creados en tiempo de ejecución, vea el Servidor web dinámico Controles y estado de vista.

3

Otra solución es que puede agregar cada control a un Panel, lo que los hará a cada uno en un <div> dando como resultado el efecto que está buscando.

Para mí esto sería más dinámico porque si oculta alguno de los controles, el div colapsará y no dejará líneas vacías.

LinkButton linkButton = new LinkButton(); 
    linkButton.ID = "LinkButtonDynamicInPlaceHolder1Id" + i; 
    linkButton.ForeColor = Color.Blue; 
    linkButton.Font.Bold = true; 
    linkButton.Font.Size = 14; 
    linkButton.Font.Underline = false; 
    linkButton.Text = itemList[i].ItemTitle.InnerText; 
    linkButton.Click += new EventHandler(LinkButton_Click); 
    linkButton.Attributes.Add("LinkUrl",itemList[i].ItemLink.InnerText); 

    //Add control to a panel, add panel to placeholder 
    Panel lbPan = new Panel(); 
    lbPan.Controls.Add(linkButton); 
    PlaceHolder1.Controls.Add(lbPan); 


    Label label = new Label(); 
    label.ID = "LabelDynamicInPlaceHolder1Id" + i; 
    label.ForeColor = Color.DarkGray; 
    label.Text = itemList[i].ItemDescription.InnerText; 

    //Add control to a panel, add panel to placeholder 
    Panel lblPan = new Panel(); 
    lblPan.Controls.Add(label); 
    PlaceHolder1.Controls.Add(lblPan); 
Cuestiones relacionadas