Как динамически добавлять пользовательские элементы управления в пользовательский элемент управления
Я хочу создать пользовательский элемент управления, который снова будет содержать пользовательский элемент управления, который будет генерироваться динамически и может повторяться 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 - это вымышленное имя класса для этого примера. Используйте класс и, если необходимо, используйте пространство имен как дополнительное, в котором оно определено, пользовательского элемента управления, который вы хотите использовать.