У меня есть пользовательский элемент управления, который динамически загружает другие пользовательские элементы управления. Проблема в том, что при обратной передаче мои элементы управления не существуют. Теперь я под впечатлением, что мне нужно повторно инициализировать их.Динамическая инициализация обратной передачи пользовательского контроля
Теперь, чтобы сделать это, так как они являются UserControls и используют ascx-файл, ни один из элементов управления UserControl не был инициализирован в пустом конструкторе.
Вопрос: Как загрузить файл ascx UserControl в это время?
В настоящее время я пытаюсь сделать это следующим образом:
for (int i = 0; i < count; i++)
{
Control ctrl;
if(ctrlCollectionType.Rows[i]["Type"] is UserControl)
ctrl = LoadControl((string)ctrlCollectionType.Rows[i]["Path"]);
else
this.LoadControl(ctrlCollectionType[i]["Type"], null);
ctrl.ID = i;
pnlContent.Controls.Add(ctrl);
}
Где ctrlCollectionType является Тип UserControl.
Редактировать: Решение по вводу Joel Coehoorn.
Ах, вы были бы правы, из любопытства с точки зрения лучших практик, что было бы лучшим способом сохранить идентификатор элемента управления? – Highstead
ClientID или обычный идентификатор сервера? Если это идентификатор сервера, просто убедитесь, что вы установили его таким же образом в обратной передаче, что и при создании. –
Хорошо, проблема заключается в том, что пользователь может выбирать элементы управления, которые добавляются динамически, поэтому я не могу рассчитывать на его создание таким же образом. – Highstead