Dropthings и загрузка пользовательского контроля контента - PullRequest
0 голосов
/ 10 декабря 2010

Я начал просматривать портал Dropthings, и я не понимаю, как загружается контент в виджете. Насколько я понимаю, заголовок находится в панели обновления, а тело виджета - в панели обновления с панелью ASP. Когда страница загружается, панели ASP всех виджетов загружаются в первую очередь перед загрузкой пользовательских элементов управления на панелях.

Может кто-нибудь объяснить, как это происходит, и указать мне код, где это происходит?

Любая помощь приветствуется

1 Ответ

0 голосов
/ 20 июля 2011

Я использую версию 2.7.5 (выпущена 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 добавляется в дерево элементов управления для каждого настроенного виджета.Затем, когда каждый контейнер инициализируется, он создает, а затем добавляет определенный UserControl на страницу.Когда вызывается

    WidgetBodyPanel.Controls.Add(widget);

, он инициализирует (OnInit) определенный виджет.Оттуда содержимое виджета находится в его собственных руках.

...