2009-02-25 31 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(這就需要將你添加它同樣每次)。