Стандартизация RadWindow

Я пытаюсь понять отношение RadWindow/RadWindowManager. Я вижу, что на одной странице может быть определено много элементов управления RadWindowManager (в отличие от RadScriptManager/ScriptManager, для которых требуется одна реализация). Но я также вижу, что мы можем реализовать RadWindow либо внутри RadWindowManager, либо как отдельный элемент управления.

Каковы преимущества использования RadWindowManager помимо возможности применять к окну параметры, определенные в диспетчере? Лучше ли держать RadWindowManager за пределами главной страницы и определять его там, где это необходимо, или лучше сохранить глобальный radwindowmanager и использовать radwindow в качестве автономного элемента управления?

Спасибо.


person Brian Mains    schedule 17.05.2011    source источник


Ответы (2)


Использование RadWindowManager — это просто удобный способ объявить общие свойства для нескольких окон на вашей странице. Вы можете объявить несколько элементов управления RadWindow в RadWindowManager, а затем получить доступ к набору окон с помощью следующих функций:

var windowManager = $find('<%= MyRadWindowManager.ClientID %>'),
    windows = windowManager.get_windows(),
    wnd,
    i = 0;
for (; i < windows.length; i++) {
    wnd = windows[i];
    // do something with the RadWindow object
}

Будьте осторожны, чтобы не называть переменную RadWindow "окном", так как это может привести к конфликту с глобальным объектом window.

Если вам нужен конкретный объект RadWindow, вы можете использовать следующий код:

var windowManager = $find('<%= MyRadWindowManager.ClientID %>'),
    wnd = windowManager.getWindowByName("MyWindow");
// do something with the RadWindow object

Или, что я предпочитаю, так это определить один RadWindowManager на главной странице без определенных окон, а затем просто использовать его для динамического открытия окон по мере необходимости. Вот пример:

<telerik:RadWindowManager ID="MasterWindowManager" runat="server" 
    VisibleOnPageLoad="false"
    VisibleStatusbar="false" 
    Behaviors="Close, Move" 
    DestroyOnClose="true" >
</telerik:RadWindowManager>

Определение RadWindowManager на вашей странице добавит функцию radopen к глобальному объекту window. Вы можете использовать его для динамического открытия новых RadWindows по мере необходимости...

var showCustomerDetails = function (customerId) {
    var url = String.format("/Views/CustomerDetails.aspx?cid={0}", customerId),
        wnd = window.radopen(url);
    wnd.set_modal(true);
    wnd.setSize(600, 400);
    wnd.show();
    wnd.center();
}

Надеюсь, это поможет.

person Kevin Babcock    schedule 17.05.2011

Я только что ответил на вашу ветку форума на форумах Телерика, но для удобства я вставляю свой ответ ниже, как дополнение к ответу Кевина.

По сути, идея RadWindowManager состоит в том, чтобы позволить пользователям создавать на клиенте несколько окон RadWindow с предопределенными свойствами, установленными в менеджере. Клиентский API менеджера позволяет разработчику легко получить ссылку на такие RadWindows и работать с ними. Однако есть несколько вещей, о которых следует помнить при использовании RadWindowManager.

1.. Если у вас несколько RadWindowManager на одной странице:

 All RadWindowManager's functions (radopen, radalert, radconfirm, radprompt, GetRadWindowManager, etc) are always using the first rendered RadWindowManager on the page.
 Every RadWindowManager "knows" only the RadWindows that are declared in its Windows collection.

Это означает, что если у вас есть RadWindow2 как автономный элемент управления ИЛИ объявленный в RadWindowManager2, и вы используете что-то вроде radopen(myUrl, "RadWindow2");, radopen будет использовать RadWindowManager1 и откроет новый RadWindow с настройками, взятыми из RadWindowManager1. Чтобы избежать этой проблемы, когда у вас есть несколько менеджеров на странице, вам нужно сначала получить ссылку на правильный RadWindowManager, а затем вызвать его методы. например var manager = $find("‹%= RadWindowManager2.ClientID %>"); manager.open(myUrl, "RadWindow2");

2. Автономные элементы управления RadWindow не могут управляться RadWindowManager - они являются отдельными элементами управления и не зависят от настроек менеджера.

person GeorgiTunev    schedule 20.05.2011
comment
этот ответ великолепен. у меня на странице был объявлен radwindowmanager, и я довольно долго задавался вопросом, почему он не работает. Оказывается, у меня был еще один radwindowmanager на мастер-странице, где должно было быть объявлено radwindow. - person Amc_rtty; 17.10.2012