2010-03-23 68 views
0

我相信你已经收到所以这一个,如果你能指出我类似的东西....Telerik的RadAlert后退按钮缓存问题

我有使用通常的Sys系统一RadAlert窗口的服务器端创作.Application.remove_load和add_load过程,但是警报不断弹出,因为当用户在激活后点击后退按钮时它似乎正在缓存。我试图在按钮上放置一个onclick事件来清除使用remove_load的函数,然后它移动到下一页,但它似乎仍然没有清除它。

它用于验证,所以如果用户输入失败的验证弹出。如果他们然后去输入正确的验证,然后移动到下一页。如果他们然后使用后退按钮,这是它弹出的地方。有任何想法吗?

服务器端:

private void Page_Load(object sender, System.EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     btnSearch.Attributes.Add("onclick", "Sys.Application.remove_load(f);"); 
    } 
} 

private void btnSearch_Click(object sender, System.EventArgs e) 
{ 
    string radalertscript = "(function(){var f = function(){radalert('Welcome to RadWindow Prometheus!',  330,  210); Sys.Application.remove_load(f);};Sys.Application.add_load(f);})()"; 

    RadAjaxManager1.ResponseScripts.Add(radalertscript); 
} 

香港专业教育学院还利用

RadAjaxManager1.ResponseScripts.Clear(); 

它移动到下一个页面上回发事件之前

回答

0

我不认为这个问题是试图radalert()函数 - 如果您也使用正常浏览器alert(),则会得到相同的行为。每次在浏览器中加载页面时都会引发Sys.Application.Load事件 - 包括当您使用后退按钮再次打开它时。如果添加radalert()的代码也在页面上,它也会运行,并且在加载过程中将显示警报。

1

lingvomir说的是正确的。我建议作为一种解决方案是ajaxify该搜索按钮。 例如

<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> 
    <AjaxSettings> 
     <telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> 
      <UpdatedControls> 
       <telerik:AjaxUpdatedControl ControlID="Button1" /> 
      </UpdatedControls> 
     </telerik:AjaxSetting> 
    </AjaxSettings> 
</telerik:RadAjaxManager> 
<telerik:RadWindowManager ID="RadWindowManager1" runat="server"> 
</telerik:RadWindowManager> 
<asp:Button ID="Button1" runat="server" Text="show radalert" OnClick="Button1_Click" /><br /> 

和代码隐藏:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string radalertscript = "radalert('Welcome to RadWindow Prometheus!',330,210);"; 
    RadAjaxManager1.ResponseScripts.Add(radalertscript); 
} 
0

您需要加载该 警报的客户端版本的中间页,回调函数然后可以导航到 正确的页面使用location.replace(。 ..) - 使用location.replace从历史记录中删除这个中间警告页

希望帮助