我有一个启动telerik radwindow的父页面。一切都运作良好。我的问题是当radwindow关闭时,父母再次重新加载。我不想要这个。我怎么能关闭radwin
完成radwindow处理该值后,我需要它将其返回到父页面,我希望父页面能够在我的代码页面后面访问该值。
答案 0 :(得分: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
}
答案 1 :(得分:1)
您是否添加了OnClientClose javascript以从打开的窗口中获取控件?
只需检查this即可。
实际上,Telerik对这些事情(我见过的最好的事情之一)的支持相当不错,如果你在这里没有得到任何好处,你应该在他们的论坛上发帖。
答案 2 :(得分:0)
正如Bumble Bee所说,你很可能有一个挂钩OnClientClose的函数提交页面,或者你正在从内容页面调用GetRadWindow()。BrowserWindol.location.reload()。
但是,您说要在父页面代码中包含值。为此,您必须前往服务器。由于您不想重新加载页面,最简单的方法是使用Ajax - 如果您使用RadControls,则有RadAjaxManager可以帮助您完成此任务:)
您可以做的是在父页面上触发Ajax请求,该请求将使用RadAjaxManager的客户端API来触发Ajax请求,该请求将获取服务器上的数据。此demo中显示了与您的方案类似的方案。在其中,当RadWindow关闭时(在内容页面中),我们在父页面中调用JavaScript函数,该函数通过RadAjaxManager触发Ajax请求并重新绑定服务器上的网格 - 所有操作都是在没有回发的情况下完成的。 有关该主题的更多信息,请查看这些帮助文章: