关闭子模式表单后父页面回发的问题

时间:2019-04-23 18:41:31

标签: javascript asp.net telerik

我正在使用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;
}

我的子窗体可以正确打开,并允许用户输入和保存数据。用户单击“保存”后,我将进行插入,然后将其称为:

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;
}

因此该代码被调用,我的子窗体成功关闭,现在焦点返回到在后台打开的“父”窗体。

这里发生的事情是,我在父表单上有整页帖子,我的主要目标是预防IT。

我的RadGrid当前在“更新面板”中,带有mode="conditional"Update Panel的触发器是一个下拉菜单,它启用了ADD按钮,从而允许用户打开子窗体并输入数据。

我一直在尝试禁用此postback数小时,但无济于事,我不知道我在做什么错。

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

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

任何帮助或提示将不胜感激。如有必要,我很乐意显示更多代码。

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

1 个答案:

答案 0 :(得分:1)

将其发布为答案,因为您似乎已从我们的评论对话中得出了答案。

检查UpdatePanel,并确保在客户端关闭时调用的所有代码都按照您的意图被触发。