呼叫RadWindow客户端的VisibleOnPageLoad端

问题描述:

我有一个应用程序使用带有内容页面和用户控件的母版页。在其中一个用户控件中,我们有另一个用户控件(我知道这是一个Inception类的东西)。这个用户控件使用RadAjaxManagerProxy并且有一个产生RadWindow的控件。一切正常:窗口显示一些RadGrids填充了来自DB的字段,然后关闭窗口。呼叫RadWindow客户端的VisibleOnPageLoad端

所有这些都是在某些服务器端事件中使用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,该OnAjaxRequest方法不支持RadAjaxManager。

我已经想出了一些这方面的选择:在客户端,这是我不能对任何论坛或文档的任何地方发现

  • 集VisibleOnPageLoad。
  • 将某种不同的事件传递给服务器,以便我可以设置属性。

或者也许有一些完全不同,我不知道或没有想到。我愿意接受任何选择。当我关闭窗口时,我已经有了一个Javascript方法,但我无法想出一个方法来让窗口保持关闭状态,而不需要执行完整的回发。

如何防止我的RadWindow在另一个AJAX请求上打开?

刚刚找到解决方案。这是正确的在我面前。在RadWindowManager上设置EnableViewState="false"可以防止这个问题的发生。很简单。希望它能帮助未来的人。

+1

http://www.telerik.com/community/forums/aspnet-ajax/window/opening-radwindow-from-the-server.aspx将更详细地解释此案例:) – rdmptn 2013-04-16 13:10:44