2

RadWindow/RadWindowManagerの関係を理解し​​ようとしています。1つのページに多数のRadWindowManagerコントロールを定義できることがわかります(1つの実装を必要とするRadScriptManager / ScriptManagerとは異なります)。しかし、RadWindowManagerの内部またはスタンドアロンコントロールとしてRadWindowを実装できることもわかりました。

マネージャで定義された設定をウィンドウに適用できることに加えて、RadWindowManagerを使用する利点は何ですか?RadWindowManagerをマスターページの外に置いて必要な場所に定義する方が良いですか、それともグローバルradwindowmanagerを保持し、スタンドアロンコントロールとしてradwindowを使用する方が良いですか?

ありがとう。

4

2 に答える 2

4

Telerikのフォーラムでフォーラムのスレッドに回答しましたが、便宜上、Kevinの返信に加えて、以下に返信を貼り付けています。

基本的に、RadWindowManagerの背後にある考え方は、ユーザーがクライアント上で、マネージャーで設定された事前定義されたプロパティを持つ複数のRadWindowsを作成できるようにすることです。マネージャーのクライアント側APIを使用すると、開発者はそのようなRadWindowsへの参照を簡単に取得し、それらを操作できます。ただし、RadWindowManagerを使用する際に留意する必要があることがいくつかあります。

1 ..同じページに複数のRadWindowManagerがある場合:

 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 ..スタンドアロンのRadWindowコントロールはRadWindowManagerで制御できません。これらは個別のコントロールであり、マネージャーの設定の影響を受けません。

于 2011-05-20T09:57:02.080 に答える
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
}

windowグローバルオブジェクトと競合するため、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();
}

それがお役に立てば幸いです。

于 2011-05-17T16:14:38.103 に答える