【问题标题】:issues with parent page postback after closing child modal form关闭子模式表单后父页面回发的问题
【发布时间】:2019-09-13 00:16:00
【问题描述】:

我正在开发一个 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;
}

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

这里发生的情况是,我在父表单上有一个整页帖子,我的主要目标是防止它。

我的RadGrid 目前在更新面板中,mode="conditional"。这个Update Panel 的触发器是一个下拉菜单,它启用了添加按钮,这反过来又允许用户打开子表单并输入数据。

我已经尝试禁用此 postback 几个小时无济于事,我不知道我做错了什么。

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

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

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

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

【问题讨论】:

  • 服务器不需要点击 btnAdd 按钮的帖子,是吗?如果没有,请从那里删除 runat=server。我认为这就是为什么它正在做你所描述的事情。此外,您的函数有两个返回语句;您可以删除第二个,它不会被击中。
  • 如果@Nikki9696 的回答没有帮助,获得帮助的最佳地点是 Telerik 论坛;他们在那里提供了非常棒的技术支持。这是他们的 Window 论坛:telerik.com/forums/aspnet-ajax/window
  • 完全明白:) 那就坚持这里的答案吧。
  • 类似的情况,但我的情况是因为我关闭了模式窗口,我尝试了解决方案,但在我的情况下不起作用。我发誓,如果我想不通,我会转行 :) @Nikki9696
  • @Nikki9696 这就是问题所在!我正在调用一个函数来使用网格更新 UpdatePanel。发生的事情是我只是在做 __PostBack('UpdatePanel',''),但我要做的是将 .ClientID 添加到更新面板,现在一切都很好。如果您想发布某种答案,因为您有帮助,我很乐意将其标记为答案

标签: javascript asp.net telerik


【解决方案1】:

作为答案发布,因为看起来您是从我们的评论对话中得出的。

检查 UpdatePanel,并确保在客户端关闭时调用的任何代码都按您的意思触发。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2021-11-28
    • 2022-11-21
    • 2021-07-15
    • 1970-01-01
    • 2012-03-29
    相关资源
    最近更新 更多