2011-05-17 217 views
2

我试图理解RadWindow/RadWindowManager关系。我看到可以在一个页面中定义许多RadWindowManager控件(与需要一个实现的RadScriptManager/ScriptManager不同)。但是我也看到我们可以在RadWindowManager内部实现RadWindow,或者作为独立的控件。RadWindow标准化

使用RadWindowManager除了能够将管理器上定义的设置应用于窗口之外,还有什么优势?将RadWindowManager放在母版页之外并将其定义在需要它的地方会更好吗?还是保留全局Radwindowmanager并将radwindow作为独立控件更好?

谢谢。

回答

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对象发生冲突。

如果你想有一个特定的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(); 
} 

我希望有帮助。

3

我刚刚在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,并将使用RadWindowManager1中的设置打开一个新的RadWindow。为了避免这个问题,当你在一个页面上有多个管理器时,你需要首先获得对正确RadWindowManager的引用,然后调用它的方法。 例如 var manager = $ find(“<%= RadWindowManager2.ClientID%>”); manager.open(myUrl,“RadWindow2”);

2 ..RadWindowManager无法控制独立的RadWindow控件 - 它们是独立的控件,不受管理器设置的影响。

+0

这个答案很棒。我在我的网页上宣布了一位radwindowmanager,并且很长时间以来一直在思考为什么它不起作用。事实证明,我在另一个radwindowmanager应该被宣布进入radwindow的主页上。 – 2012-10-17 17:23:43