Элементы пользовательского элемента управления не инициализируются при динамическом добавлении?

У меня есть собственный пользовательский элемент управления ASP.Net, который я построил; делал это достаточно много раз, но этот плохо себя ведет, и я не могу понять, почему.

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

Однако, если страница добавляет этот конкретный элемент управления динамически (к заполнителю на главной странице, что и вызывает всю эту вещь), элементы в ней остаются твердо NULL - ничего из пользовательского элемента управления вообще не записывается клиенту, включая статическое содержимое в пользовательском управлении.

Куда я могу пойти не так?

4 ответа

Решение

Ответ отсортирован - идентификаторы незначительны, можно обойтись без, но если вы делаете

Control a = new Control;

это не работает, тогда как

Control a = (Control)Page.LoadControl("~/Folder/Control.ascx");

работает то, что я забыл поздно ночью:-)

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

Для ASP.NET Web Site Project работает следующее

Control a = new Control;

Для ASP.NET Web Application Project работает следующее

Control a = (Control)Page.LoadControl("~/Folder/Control.ascx");

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

Например:

Control selWebControl = (Control)Page.LoadControl("~/DL/Templates/FileLibrary.ascx");
selWebControl.ID = "UC" + "_" + dfRow.ID;

Убедитесь, что вы добавляете его в коллекцию элементов управления, которая находится на странице, и убедитесь, что вы делаете это в нужное время на странице LifeCycle. Мне нравится переопределять CreateChildControls.

Поэтому убедитесь, что вы используете Page.Controls.Add(myNewControl) или PlaceHolder1.Controls.Add(myNewControl).

Может помочь, если вы показали код, в котором вы динамически создаете элемент управления и добавляете его на страницу

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