2010-03-23 10 views
0

Je suis sûr que vous avez eu celui-ci avant si vous pouviez me pointer vers quelque chose de similaire ....Telerik RadAlert retour problème de cache bouton

J'ai une création côté serveur d'une fenêtre RadAlert en utilisant l'habitude Sys .Application.remove_load et add_load procédure cependant l'alerte ne cesse d'apparaître car il semble être en cache lorsque l'utilisateur appuie sur le bouton de retour après qu'il a été activé. J'ai essayé de mettre un événement onclick sur un bouton pour effacer la fonction en utilisant remove_load avant de passer à la page suivante mais il ne semble toujours pas l'effacer.

Son utilisé dans la validation, donc si une entrée des utilisateurs a échoué la validation, il apparaît. S'ils vont ensuite et entrez la validation correcte, alors il passe à la page suivante. S'ils utilisent ensuite le bouton de retour, c'est là qu'il réapparaît. Des idées?

côté serveur:

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); 
} 

Ive a également essayé d'utiliser

RadAjaxManager1.ResponseScripts.Clear(); 

avant qu'il ne passe à la page suivante sur l'événement postback

Répondre

0

Je ne pense pas que le problème est avec la fonction radalert() - Vous obtiendrez le même comportement si vous utilisez le navigateur normal alert(). L'événement Sys.Application.Load est déclenché chaque fois que la page est chargée dans le navigateur, y compris lorsque vous utilisez le bouton Précédent pour l'ouvrir à nouveau. Si le code qui ajoute le radalert() est également sur la page, il s'exécutera aussi et l'alerte sera affichée pendant le chargement.

1

Ce que lingvomir dit est correct. Ce que je suggère comme solution est d'ajaxify ce bouton de recherche. par exemple.

<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 /> 

et codebehind:

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

Vous avez besoin d'une page intermédiaire qui charge la version client de l'alerte , la fonction de rappel peut alors accéder à la bonne page à l'aide location.replace (. ..) - en utilisant location.replace va supprimer cette page d'alerte intermédiaire de l'histoire

espérons que cela aide

Questions connexes