我有一个使用MasterPage的应用程序,内容页面和用户控件。在其中一个用户控件中,我们有另一个用户控件(我知道,它是一种Inception类型的东西)。此用户控件使用RadAjaxManagerProxy并具有生成RadWindow的控件。一切正常:窗口显示一些RadGrids填充了DB中的字段,然后关闭窗口。
所有这些都是在某些服务器端事件中使用RadWindow1.VisibleOnPageLoad = true
完成的。关闭窗口后,我无法设置RadWindow1.VisibleOnPageLoad = false;
所以当我点击另一个触发AJAX事件的控件(在本例中显示不同的RadWindow)时,RadWindow会在弹出之前弹出。
在我们的应用程序的其他部分,我们通过RadWindow的OnClientClose方法将参数传递给服务器,我们用它来调用RadAjaxManager的服务器端OnAjaxRequest事件。这会触发服务器端事件,我可以设置属性,如下所示:
JS:
function WindowClose(sender, args) {
SendRequest("ArgumentName");
}
function SendRequest(requestName) {
var ajaxManager = $find("<%= RadAjaxManagerMain.ClientID %>");
ajaxManager.ajaxRequest(requestName);
}
C#:
protected void RadAjaxManagerMain_AjaxRequest(object sender, AjaxRequestEventArgs args)
{
if (args.Argument == "ArgumentName")
{
RadWindow1.VisibleOnPageLoad = false;
}
}
但由于我使用的是RadAjaxManagerProxy,因此不支持RadAjaxManager的OnAjaxRequest方法。
我已经为此提出了一些选择:
或者可能有一些我不知道或没有想到的完全不同的东西。我愿意接受任何选择。我已经有了一个Javascript方法,当我关闭窗口时会触发它,我只是想办法让窗口保持关闭而不进行完整的回发。
如何阻止我的RadWindow在另一个AJAX请求中打开?
答案 0 :(得分:0)
刚刚找到解决方案。它就在我面前。在RadWindowManager上设置EnableViewState="false"
可防止此问题发生。很简单。希望它能帮助将来的某个人。