使用占位符动态生成控件



如何在 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控件,需要使用RepeaterItemDataBound事件。

ItemDataBound的方法中,您需要找到PlaceHolder控件。首先检查ItemTypeListItemType.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);

最新更新