【问题标题】:struggling with programmatically adding user controls努力以编程方式添加用户控件
【发布时间】:2009-02-25 12:07:50
【问题描述】:

我遇到了和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);
}

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

知道我做错了什么吗?

提前致谢

【问题讨论】:

    标签: c# asp.net user-controls


    【解决方案1】:

    你可能想改用这个:

    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】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-13
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 2011-12-15
        • 2012-08-15
        • 2011-08-14
        • 1970-01-01
        相关资源
        最近更新 更多