0

我有一个使用带有内容页面和用户控件的 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 请求时打开?

4

1 回答 1

1

刚刚找到解决方案。它就在我的面前。RadWindowManagerEnableViewState="false"上的设置阻止了此问题的发生。很简单。希望它对将来的人有所帮助。

于 2013-04-11T15:12:43.860 回答