我正在尝试理解RadWindow / RadWindowManager关系。我看到可以在一个页面中定义许多RadWindowManager控件(与需要一个实现的RadScriptManager / ScriptManager不同)。但我也看到我们可以在RadWindowManager内部或作为独立控件实现RadWindow。
除了能够将管理器上定义的设置应用于窗口之外,使用RadWindowManager有什么好处?将RadWindowManager保留在母版页之外并将其定义在需要的位置更好,还是保留全局radwindowmanager并将radwindow作为独立控件更好?
感谢。
答案 0 :(得分:4)
我刚刚在Telerik论坛上回答了你的论坛帖子,但为了方便起见,我在下面粘贴了我的回复,作为Kevin回复的补充。
基本上,RadWindowManager背后的想法是允许用户在客户端上创建具有预定义属性的多个RadWindows,并在管理器中设置。经理的客户端API允许开发人员轻松获得对此类RadWindows的引用并与其一起操作。 但是,有几件事情在使用RadWindowManager时应该牢记。
1 ..如果您在同一页面上有多个RadWindowManagers:
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 .. RadWindowManager无法控制独立的RadWindow控件 - 它们是单独的控件,不受管理器设置的影响。
答案 1 :(得分:2)
使用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”,因为它会与全局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();
}
我希望有所帮助。