質問

タイマーのOnTickイベントが続行できることを確認するために、クライアント側のスクリプトが必要です。

Timer1ポストバックが発生する前に CanContinue()を呼び出すにはどうすればよいですか?
ユーザーが[キャンセル]を選択した場合、ポストバックをキャンセルするにはどうすればよいですか?

<%@ 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>

注:一部の読者は、x分ごとにモーダル確認を表示する際に問題を起こす場合があります。これは使い勝手が悪いことに同意しますが、デザインを変更する立場にはありません。


更新:結局タイマーを使用しないことにしました。代替ソリューションの詳細については、この投稿をご覧ください。

役に立ちましたか?

解決 2

結局タイマーを使用しないことにしました。代替ソリューションの詳細については、この投稿をご覧ください。

他のヒント

サーバーアクションを呼び出すためにタイマーによって生成されたメソッドに結び付ける方法があるかどうかわかりません。ただし、javascriptコンポーネントへの参照を取得して、間隔を開始/停止または変更することができます。これを念頭に置いて、必要な機能を取得するために厄介なハッキングを行うことができます。

たとえば:

  1. タイマーへの参照を取得します。 (次のようなもの:$find(‘<%= Timer1.ClientID %>’);
  2. タイマーを停止します。
  3. 同じ間隔で新しいタイマーを作成します。
  4. タイマーを実行し、状態を引き起こします。
  5. 条件の戻り値に応じて、サーバーが生成したタイマー間隔を〜0に設定し、開始/停止できます。

これはエレガントなソリューションではありませんが、組み込みのasp.netタイマーを使用したことがないため、あまり多くの洞察を提供することはできません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top