我遇到问题Programmatically added User Control does not create its child controls中的问题。
在阅读问题和答案后,我改变了我的代码,现在看起来像这样:
foreach (ITask task in tasks)
{
TaskListItem taskListItem = LoadControl(
typeof(TaskListItem),
new object[] {task}
) as TaskListItem;
taskListItem.TaskCompleteChanged += taskListItem_TaskCompleteChanged;
taskListItemHolder.Controls.Add(taskListItem);
}
但是,我仍然得到一个用户控件,其子控件尚未实例化。
知道我做错了吗?
提前致谢
答案 0 :(得分:3)
你可能想要改用它:
foreach (ITask task in tasks)
{
TaskListItem taskListItem = LoadControl("~/TaskListItem.ascx") as TaskListItem;
taskListItem.Task = task;
taskListItem.TaskCompleteChanged +=
taskListItem_TaskCompleteChanged;
taskListItemHolder.Controls.Add(taskListItem);
}
这是因为TaskListItem不是实际控件的类型,而是控件的代码隐藏类的类型。检查this page in MSDN(在社区内容的底部)。
答案 1 :(得分:1)
确保您在CreateChildControls方法中添加控件(您可以覆盖它),同时为控件提供一个ID(每次添加时都需要相同)。