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

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 23 июля 2010

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

Control a = new Control;

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

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

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

1 голос
/ 04 января 2012

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

Для проекта веб-сайта ASP.NET работает следующее

Control a = new Control;

Для проекта веб-приложения ASP.NET:работает

Control a = (Control)Page.LoadControl("~/Folder/Control.ascx");
0 голосов
/ 01 июля 2010

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

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

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

0 голосов
/ 01 июля 2010

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

Например:

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