2011-05-17 227 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