Как динамически добавлять пользовательские элементы управления в пользовательский элемент управления

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

Как я могу это сделать.

2 ответа

Решение

Вы хотите использовать TemplateControl.LoadControl (от которого наследуются Page, UserControl и MasterPage). Это нужно сделать во время события Init, чтобы все работало с обратной передачей.

void Page_Init(Object Sender, EventArgs e) {
    var control = LoadControl("Awesome.ascx");
    // ... Magic!
}

Поместите элемент управления заполнителя на родительский пользовательский элемент управления:

<asp:PlaceHolder runat="server" id="phMainHolder" />

В событии Page_Load или Page_Init вы просто создаете экземпляры дочерних пользовательских элементов управления в цикле for(each) и добавляете их в заполнитель, например:

for(int i = 0; i < 10; i++) {
    ChildUC child = new ChildIC();
    phMainHolder.Controls.Add(child);
}

Это самый необходимый минимум для этого. Конечно, вы можете установить свойства или что-то еще на своих дочерних элементах управления.

Класс ChildUC - это вымышленное имя класса для этого примера. Используйте класс и, если необходимо, используйте пространство имен как дополнительное, в котором оно определено, пользовательского элемента управления, который вы хотите использовать.

Другие вопросы по тегам