0

我开始查看 dropthings 门户,但我不明白小部件中的内容是如何加载的。我的理解是标题位于 Updatepanel 中,而小部件的主体位于 UpdatePanel 中,其中包含 ASP 面板。当页面加载时,首先加载所有小部件的 ASP 面板,然后再加载面板中的用户控件。

有人可以解释这是怎么发生的,并指出设置的代码吗?

任何帮助表示赞赏

4

1 回答 1

0

我使用的是 2.7.5 版(1 月 11 日发布),所以这可能会更新一些。

每个小部件都是一个用户控件,并托管在 WidgetContainer.ascx 中。WidgetContainer 提供所有常用功能,如标题重命名、定位、展开/折叠、编辑等。源文件位于根“dropthings”文件夹中。查看 Init 方法,我们可以看到 UserControl 实例化并添加到页面的位置:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);

    var widget = LoadControl(this.WidgetInstance.Widget.Url);  //Here's the magic
    widget.ID = "Widget" + this.WidgetInstance.Id.ToString();

    WidgetBodyPanel.Controls.Add(widget);
    _WidgetRef = widget as IWidget;
    if (_WidgetRef != null) _WidgetRef.Init(this);        
}

因此,首先将 WidgetContainer 添加到配置的每个 Widget 的控制树中。然后在初始化每个容器时,它会创建特定的 UserControl,然后将其添加到页面中。什么时候

    WidgetBodyPanel.Controls.Add(widget);

被调用时,它将初始化(OnInit)特定的小部件。从那里,小部件的内容掌握在自己手中。

于 2011-07-19T23:24:26.700 回答