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



我正在开发一个 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的触发器是一个下拉列表,它启用了 ADD 按钮 ,这反过来又允许用户打开子窗体并输入数据。

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

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

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

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

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

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

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

最新更新