Question

J'ai besoin d'un script côté client pour confirmer que l'événement OnTick du minuteur peut continuer.

Comment appeler CanContinue () avant que la publication Timer1 se produise?
Comment puis-je annuler la publication si l'utilisateur sélectionne Annuler?

<%@ Page Language="C#" %>
<script runat="server">
    protected void Timer1_OnTick(object sender, EventArgs e)
    {
        Response.Write("Last Postback: " + DateTime.Now.ToString());
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Timer Test</title>
    <script type="text/javascript" language="javascript">
        function CanContinue() {
            return confirm('The page is requesting new data.  Ok or Cancel?');
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_OnTick" Interval="300000" />
    </form>
</body>
</html>

REMARQUE: certains lecteurs pourraient ne pas vouloir afficher une confirmation modale toutes les x minutes. Je conviens que cela n’est pas très convivial, mais je ne suis pas en mesure de modifier le design.

UPDATE: J'ai finalement décidé de ne pas utiliser de minuteur. Voir ce message pour plus de détails sur une solution alternative.

Était-ce utile?

La solution 2

J'ai finalement décidé de ne pas utiliser de minuterie. Voir ce message pour plus de détails sur une solution alternative.

Autres conseils

Je ne sais pas s'il existe un moyen de se connecter à la méthode générée par le minuteur pour invoquer l'action du serveur. Cependant, vous pouvez obtenir une référence au composant javascript et démarrer / arrêter ou modifier l'intervalle. Dans cet esprit, vous pouvez faire du piratage pour obtenir les fonctionnalités souhaitées.

Par exemple:

  1. Obtenez une référence à votre minuterie. (quelque chose comme: $find(‘<%= Timer1.ClientID %>’);)
  2. Arrêtez le chronomètre.
  3. Créer une nouvelle minuterie avec le même intervalle.
  4. Exécuter votre minuterie et provoquer la condition.
  5. En fonction de la valeur de retour de votre condition .. vous pouvez définir l'intervalle de minuterie généré par le serveur sur ~ 0 et démarrer / arrêter.

Ce n’est pas une solution élégante, mais je ne peux pas dire que j’ai déjà travaillé avec des minuteries asp.net intégrées, je ne peux donc pas vous en dire plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top