2009-02-25 30 views
0

我有和问题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); 
} 

不过,我仍然得到用户控制其子控件没有被实例化。

任何想法我做错了什么?

在此先感谢

回答

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

确保您在CreateChildControls方法添加控件(你可以重写它),也给控制的ID(这就需要将你添加它同样每次)。