RadWindow Standardis

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

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

Благодарю.

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

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

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

По сути, идея RadWindowManager состоит в том, чтобы позволить пользователям создавать на клиенте несколько RadWindows с предопределенными свойствами, установленными в менеджере. Клиентский 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 - они являются отдельными элементами управления и не зависят от настроек менеджера.

Другие вопросы по тегам