борется с программным добавлением пользовательских элементов управления - PullRequest
0 голосов
/ 25 февраля 2009

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

После прочтения вопроса и ответа я изменил свой код, который теперь выглядит следующим образом:

foreach (ITask task in tasks)
{
    TaskListItem taskListItem = LoadControl(
        typeof(TaskListItem),
        new object[] {task}
    ) as TaskListItem;

    taskListItem.TaskCompleteChanged += taskListItem_TaskCompleteChanged;                        

    taskListItemHolder.Controls.Add(taskListItem);
}

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

Есть идеи, что я делаю не так?

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 25 февраля 2009

Вы, вероятно, хотите использовать это вместо:

foreach (ITask task in tasks)
{
  TaskListItem taskListItem = LoadControl("~/TaskListItem.ascx") as TaskListItem;

  taskListItem.Task = task;
  taskListItem.TaskCompleteChanged +=
      taskListItem_TaskCompleteChanged;                        

  taskListItemHolder.Controls.Add(taskListItem);
}

Это потому, что TaskListItem - это не тип реального элемента управления, а тип класса code-behind элемента управления. Отметьте эту страницу в MSDN (внизу, в контенте сообщества).

1 голос
/ 25 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...