Pregunta

Este es el código a continuación en el código detrás del evento Page_Load del archivo:

        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 generado.

¿Fue útil?

Solución

La solución a su problema de Salto de línea se encuentra a continuación, sin embargo, si está haciendo esto en el evento Page_Load, entonces sus controladores de eventos no funcionarán y tendrá problemas con el Ciclo de vida de la página. Básicamente, para que sus controladores de eventos se activen en PostBack, realmente necesita crear estos controles dinámicos antes 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);

Otros consejos

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

Para mí, esto sería más dinámico porque si ocultas cualquiera 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);

Cómo: Agregar controles a una página web ASP.NET mediante programación

  

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top