Как создать разрывы строк между динамически генерируемыми метками в заполнителе?

StackOverflow https://stackoverflow.com/questions/830304

Вопрос

Это код, приведенный ниже в коде события Page_Load файла:

        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);

Я хочу разрыв строки между каждым сгенерированным элементом управления.

Это было полезно?

Решение

Решение вашей проблемы разрыва строки приведено ниже: если вы делаете это в событии Page_Load, то ваши обработчики событий не будут работать, и вы столкнетесь с проблемами жизненного цикла страницы. По сути, для того, чтобы ваши обработчики событий запускались в PostBack, вам действительно нужно создавать эти динамические элементы управления ранее в жизненном цикле страницы. Попробуйте переместить свой код в метод OnInit, если вы столкнулись с этой проблемой.

    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);

Другие советы

Другое решение состоит в том, что вы можете добавить каждый элемент управления в Panel, который будет отображать каждый из них в виде <div>, что приведет к желаемому эффекту.

Для меня это будет более динамично, потому что если вы скроете какой-либо из элементов управления, div разрушится и не оставит пустых строк.

    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);

Как добавить элементы управления на веб-страницу ASP.NET программным способом

  

В некоторых случаях вы можете захотеть   создавать как статический текст, так и элементы управления.    Для создания статического текста вы можете использовать веб-сервер Literal или Label.   управления . Затем вы можете добавить эти   контролирует контейнер, как вы бы   любой другой контроль. Для информации   о состоянии просмотра в созданных элементах управления   во время выполнения см. Динамический веб-сервер   Управление и просмотр состояния.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top