关闭子模态窗体后父页回发的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关闭子模态窗体后父页回发的问题相关的知识,希望对你有一定的参考价值。

我正在研究ASP.NET应用程序,遇到了一个我无法解决的问题。我有一个名为Form1.aspx的父表单,其中包含Telerik RadGrid。在页面加载时,此网格完全为空。用户可以通过单击添加来添加数据,在这种情况下,Rad窗口打开:这是我的代码:

<td >
     <input id="btnAdd" runat="server" onclick="showQuestion4()"
      type="button" value="Add" />
</td>

我有这样的RadWindowManager

<telerik:RadWindowManager ID="RequestsRadWindowManager" runat="server" >
  <Windows>
    <telerik:RadWindow ID="ClientQuestion4" runat="server" Behaviors="Close,Move" 
      EnableEmbeddedSkins="false" Height="300px" Modal="true" OnClientClose="OnClientClose" 
      ReloadOnShow="true" Skin="WebBlue" Width="550px">
    </telerik:RadWindow>
  </Windows>
</telerik:RadWindowManager>

而我的JS函数实际打开了窗口:

function showQuestion4() {
    return window.radopen("mdClientQ4.aspx?mode=add", "ClientQuestion4", "return false;");
    return false;
}

我的子表单正确打开,并允许用户输入和保存数据。一旦用户点击SAVE,我会进行插入,然后调用:

RadAjaxManager1.ResponseScripts.Add("cancelAndClose();")

这对应于这个JS代码:

function cancelAndClose() {
var oWnd = GetRadWindow();
oWnd.close();
}

function GetRadWindow() {
  var oWindow = null;
  if (window.radWindow) oWindow = window.radWindow;
  elseif(window.frameElement.radWindow)oWindow=window.frameElement.radWindow;
  return oWindow;
}

所以这个代码被调用,我的子窗体成功关闭,现在焦点返回到我在后台打开的父窗体。

这里发生的事情是,我在父表单上有一个Full Page Post,我的主要目标是防止它。

我的RadGrid目前在更新面板中,mode="conditional"。此Update Panel的触发器是一个下拉列表,它启用了ADD按钮,该按钮允许用户打开子表单并输入数据。

我一直试图禁用这个postback几个小时无济于事,我不知道它是什么我做错了。

我在我的return false; javascript函数中设置了showQuestion4(),但这仍然被绕过,并且父页面具有整页加载。

我的目标是关闭子表单,而不是在我的父表单中发生POST BACK,而是我想简单地用RadGrid重新加载UpdatePanel,它将显示用户在子表单中输入的信息。

任何帮助或提示将不胜感激。如果有必要,我会非常乐意展示更多代码。

编辑:根据下面的Nikkis评论,我从runat="server"删除了btnAdd但是,我的父母表格仍然通过回发

答案

发布作为答案,因为看起来你从我们的评论对话中解决了问题。

检查UpdatePanel,并确保在客户端关闭时调用的任何代码都会触发,因为它意味着要触发它。

以上是关于关闭子模态窗体后父页回发的问题的主要内容,如果未能解决你的问题,请参考以下文章

带有 ASP.NET 回发的 jQuery 模态对话框

Asp.Net jQuery $.getJSON 有时会导致整页回发?

跨页回发后Control.UniqueID不同

单击面板会导致异步回发,但单击子项会导致整页回发

webforms 所有执行异步回发的子节点,即使 updatemode 设置为条件

由 UpdatePanel 内 GridView 内的 LinkBut​​ton 触发的完整回发