0

タイマーの 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 分ごとにモーダル確認を表示することに問題を起こすかもしれません。これが使いやすさに欠けることには同意しますが、デザインを変更する立場にはありません。


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

4

2 に答える 2

0

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

例えば:

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

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

于 2009-01-13T16:58:02.027 に答える
0

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

于 2009-02-23T21:55:18.717 に答える