telerikradwindowを起動する親ページがあります。すべてがうまく機能します。私の問題は、radwindowが閉じられたときに、親が再びリロードすることです。これは欲しくない。どうすればradwinを閉じることができますか
radwindowが値の処理を完了したら、それを親ページに戻すために必要です。親ページがコードビハインドページでこの値にアクセスできるようにしたいと思います。
親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
}
開いているウィンドウからコントロールを取得する OnClientClose JavaScript を追加しましたか?
これをチェックしてください。
実際、Telerik のサポートはこれらの問題に関して非常に優れており (私が見た中で最高のサポートの 1 つです)、ここで何も得られない場合は、フォーラムに質問を投稿してください。
Bumble Beeが言ったように、おそらくページを送信するOnClientCloseにフックされた関数を持っているか、コンテンツページからGetRadWindow()。BrowserWindol.location.reload()のようなものを呼び出しています。
ただし、親のページコードの後ろに値を入れたいと言います。これを行うには、サーバーにアクセスする必要があります。ページをリロードしたくないので、これを行う最も簡単な方法はAjaxを使用することです。RadControlsを使用している場合は、このタスクを支援するRadAjaxManagerがあります:)
できることは、親ページでAjaxリクエストを起動することです。これにより、RadAjaxManagerのクライアント側APIを使用してAjaxリクエストが起動され、サーバー上のデータが取得されます。このデモでは、あなたと同様のシナリオが示されています。その中で、RadWindowが(コンテンツページで)閉じられると、親ページでJavaScript関数が呼び出され、RadAjaxManagerを介してAjaxリクエストが発生し、サーバー上のグリッドが再バインドされます。すべてがポストバックなしで実行されます。このテーマの詳細については、次のヘルプ記事を確認してください。