如何在 c# 中使用占位符动态创建divs
?我已经在中继器中声明了占位符。
是否可以在占位符中动态创建控件?
在这里你去:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
PlaceHolder pl = e.Item.FindControl("PlaceHolder1") as PlaceHolder;
if (pl != null)
{
HtmlGenericControl div1 = new HtmlGenericControl("div");
div1.InnerHtml = "Hello";
pl.Controls.Add(div1);
}
}
}
若要将div
动态添加到Repeater
控件中的PlaceHolder
控件,需要使用Repeater
的ItemDataBound
事件。
在ItemDataBound
的方法中,您需要找到PlaceHolder
控件。首先检查ItemType
是ListItemType.Item
还是ListItemType.AlternatingItem
。
PlaceHolder ph = (PlaceHolder) e.Item.FindControl("PlaceHolderControl1");
然后,您可以按照MUG4N的建议添加div
。
HtmlGenericControl div1 = new HtmlGenericControl("div");
div1.InnerHtml = "Hello";
div1.Attributes.Add("class", "classname");
div1.Attributes.Add("style", "top: 10px; left: 20px;");
ph.Controls.Add(div1);
要添加另一个div
,只需从div1 = new HtmlGenericControl("div");
向下重复到ph.Controls.Add(div1);
或者,您可以添加一个<asp:Panel>
控件,因为它在页面上呈现为<div>
,但更".net"
Panel panel1 = new Panel();
然后向其添加<asp:Literal>
控件。
Literal literal1 = new Literal() { Text = "Hello" };
panel1.Controls.Add(literal1);
ph.Controls.Add(panel1);