我试图弄清RadWindow / RadWindowManager关系。我看到在一页中可以定义许多RadWindowManager控件(不同于RadScriptManager / ScriptManager需要一个实现)。但是我也看到我们可以在RadWindowManager内部或作为独立控件来实现RadWindow。

除了可以将管理器上定义的设置应用于窗口之外,使用RadWindowManager有什么好处?是将RadWindowManager保留在母版页之外并在需要的地方定义它,还是保留全局radwindowmanager并将radwindow作为独立控件更好?

谢谢。

最佳答案

使用RadWindowManager只是为页面上的多个窗口声明通用属性的简便方法。您可以在RadWindowManager中声明多个RadWindow控件,然后通过以下函数访问窗口的集合:

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


希望对您有所帮助。

10-06 02:42