Как создать разрывы строк между динамически генерируемыми метками в заполнителе?
-
06-07-2019 - |
Вопрос
Это код, приведенный ниже в коде события 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. управления . Затем вы можете добавить эти контролирует контейнер, как вы бы любой другой контроль. Для информации о состоянии просмотра в созданных элементах управления во время выполнения см. Динамический веб-сервер Управление и просмотр состояния.