呼叫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"
可以防止这个问题的发生。很简单。希望它能帮助未来的人。
http://www.telerik.com/community/forums/aspnet-ajax/window/opening-radwindow-from-the-server.aspx将更详细地解释此案例:) – rdmptn 2013-04-16 13:10:44