我试图弄清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();
}
希望对您有所帮助。