如何在运行时向ItemTemplate(Repeater)添加控件?

时间:2008-11-07 09:43:17

标签: c# repeater

我正在设计一个丰富的转发器控件,它需要在运行时添加一些控件(特别是一个无序列表)。

我选择的解决方案是将nesseccary标记onInit分别注入标题,项目和页脚模板。
我可以获取模板(使用InstantiateIn),然后根据需要添加标记,但我不知道将模板添加回转发器的方法吗?

1 个答案:

答案 0 :(得分:4)

过去我只是简单地处理了ItemDataBound Event,并用我需要做的任何事情修改了当前的RepeaterItem

示例:

private void Repeater1_ItemDataBound(object Sender, RepeaterItemEventArgs e)
{
    // Make sure you filter for the item you are after
    if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
    {
        PlaceHolder listLocation = (PlaceHolder)e.Item.FindControl("listPlaceHolder");
        var subItems = ((MyClass)e.Item.DataItem).SubItems;

        listLocation.Controls.Add(new LiteralControl("<ul>");

        foreach(var item in subItems)
        {
            listLocation.Controls.Add(new LiteralControl("<li>" + item + "</li>"));
        }

        listLocation.Controls.Add(new LiteralControl("</ul>");
    }
}