我有一个使用带有内容页面和用户控件的 MasterPage 的应用程序。在其中一个用户控件中,我们有另一个用户控件(我知道,这是一种 Inception 类型的东西)。此用户控件使用 RadAjaxManagerProxy 并具有生成 RadWindow 的控件。一切正常:窗口显示了一些填充了数据库字段的 RadGrid,然后我关闭了窗口。
所有这些都是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 方法。
我为此提出了一些选择:
- 在客户端设置 VisibleOnPageLoad,我在任何论坛或文档的任何地方都找不到。
- 将某种不同的事件传递给服务器,以便我可以设置属性。
或者,也许有一些我不知道或没有想到的完全不同的东西。我愿意接受任何选择。我已经有一个 Javascript 方法在我关闭窗口时被触发,我只是想不出一种方法来让窗口保持关闭而不进行完整的回发。
如何防止我的 RadWindow 在另一个 AJAX 请求时打开?