代码之家  ›  专栏  ›  技术社区  ›  Sekhat

难以以编程方式添加用户控件

  •  0
  • Sekhat  · 技术社区  · 16 年前

    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);
    }
    

    但是,我仍然得到一个用户控件,其子控件尚未实例化。

    知道我做错了什么吗?

    提前感谢

    2 回复  |  直到 8 年前
        1
  •  3
  •   M4N    16 年前

    你可能想用这个:

    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

        2
  •  1
  •   Kieron    16 年前

    确保您正在CreateChildControls方法中添加控件(您可以覆盖它),并且为控件提供一个ID(每次添加时都需要相同)。

    推荐文章