2010-03-23 51 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從歷史記錄中刪除這個中間警告頁

希望幫助