Как добавить элементы управления в ItemTemplate (Repeater) во время выполнения? - PullRequest
2 голосов
/ 07 ноября 2008

Я разрабатываю богатый элемент управления повторителем, которому необходимо добавить некоторые элементы управления (в частности, просто неупорядоченный список) во время выполнения.

Решение, которое я выбрал, заключается в том, чтобы добавить несуществующую разметку onInit в шаблоны заголовка, элемента и нижнего колонтитула соответственно.
Я могу получить шаблоны (используя InstantiateIn), а затем добавить разметку по мере необходимости, но я не знаю, как добавить шаблон обратно в повторитель?

1 Ответ

4 голосов
/ 07 ноября 2008

В прошлом я просто обрабатывал 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>");
    }
}
...