4

telerikradwindowを起動する親ページがあります。すべてがうまく機能します。私の問題は、radwindowが閉じられたときに、親が再びリロードすることです。これは欲しくない。どうすればradwinを閉じることができますか

radwindowが値の処理を完了したら、それを親ページに戻すために必要です。親ページがコードビハインドページでこの値にアクセスできるようにしたいと思います。

4

3 に答える 3

3

親ASPX:

<telerik:RadWindowManager ID="RadWindowManager1" runat="server" DestroyOnClose="true" Width="750px" Height="500px" OnClientClose="onClientClose">
    <windows>
<telerik:RadWindow ID="RadWindow1" runat="server">
</telerik:RadWindow>
    </windows>
</telerik:RadWindowManager>
<%-- RadAjaxManager --%>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" OnAjaxRequest="RadAjaxManager1_AjaxRequest">
    <ajaxsettings>
<telerik:AjaxSetting AjaxControlID="RadAjaxManager1">
    <UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadAjaxManager1" />
<telerik:AjaxUpdatedControl ControlID="RadGrid1" />
    </UpdatedControls>
</telerik:AjaxSetting>       
    </ajaxsettings>
</telerik:RadAjaxManager>

<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">

    <script type="text/javascript">

// Insert in RadWindow
function showForm(url) {
    window.radopen(url, "RadWindow1");
    return false;
}


function onClientClose(oWnd, args) {
    // get the transferred arguments
    var arg = args.get_argument();
    if (arg == '' || arg == null) {
// No need to refresh RadGrid
    }
    else {
$find("<%= RadAjaxManager1.ClientID %>").ajaxRequest(arg);
    }
}


    </script>

</telerik:RadCodeBlock>

背後にある親コード:

protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
{
    var result = Int32.Parse(e.Argument); // return argument from child
}

子ASPX

<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">

<script type="text/javascript">

    //mandatory for the RadWindow dialogs functionality
    function getRadWindow() {
    if (window.radWindow) {
        return window.radWindow;
    }
    if (window.frameElement && window.frameElement.radWindow) {
        return window.frameElement.radWindow;
    }
    return null;
    }

    // Fires when the changes are saved
    function onClientClose(arg) {
        // Pass the arguments from the dialog to the callback function on the main page.    
        getRadWindow().close(arg);
    }
    </script>

</telerik:RadCodeBlock>

背後にある子コード

protected void ChildSave_Click(object sender, EventArgs e)
{

    ClientScriptManager cs = Page.ClientScript;

    cs.RegisterStartupScript(typeof(Page), "CloseScript_" + UniqueID,
      "onClientClose('1');", true); // Return value 1 to parent

}
于 2011-07-13T20:55:15.653 に答える
2

開いているウィンドウからコントロールを取得する OnClientClose JavaScript を追加しましたか?

これをチェックしてください。

実際、Telerik のサポートはこれらの問題に関して非常に優れており (私が見た中で最高のサポートの 1 つです)、ここで何も得られない場合は、フォーラムに質問を投稿してください。

于 2011-07-08T18:20:27.713 に答える
0

Bumble Beeが言ったように、おそらくページを送信するOnClientCloseにフックされた関数を持っているか、コンテンツページからGetRadWindow()。BrowserWindol.location.reload()のようなものを呼び出しています。

ただし、親のページコードの後ろに値を入れたいと言います。これを行うには、サーバーにアクセスする必要があります。ページをリロードしたくないので、これを行う最も簡単な方法はAjaxを使用することです。RadControlsを使用している場合は、このタスクを支援するRadAjaxManagerがあります:)

できることは、親ページでAjaxリクエストを起動することです。これにより、RadAjaxManagerのクライアント側APIを使用してAjaxリクエストが起動され、サーバー上のデータが取得されます。このデモでは、あなたと同様のシナリオが示されています。その中で、RadWindowが(コンテンツページで)閉じられると、親ページでJavaScript関数が呼び出され、RadAjaxManagerを介してAjaxリクエストが発生し、サーバー上のグリッドが再バインドされます。すべてがポストバックなしで実行されます。このテーマの詳細については、次のヘルプ記事を確認してください。

于 2011-07-11T12:32:43.727 に答える