1

コード ビハインドとして asp.net と vb.net を使用して、System.Timers.Timer 経過イベントで UpdatePanel を更新することは可能ですか? タイマー コントロールが利用できることは知っていますが、Systems.Timer.Timer でこれを行うのを手伝ってください。このように使用する理由があります。

タイマーの経過イベントを処理するサブルーチンが呼び出されるたびに、テキストを更新するリテラルがあります。テキストを更新したら、UpdatePanel で update() を呼び出します。何も起こりません。クライアント側でJavascriptを使用してこれを行う方法があることは知っていますが、可能であれば、それを避けてサーバー側にとどまりたいと思います.Ajax UpdatePanelがとにかく私のためにやろうとしていることです。UpdatePanel は必要なことを正確に行う必要があるように感じます。この場合、リテラルが保存されているページのほんの一部を更新します。よろしくお願いします。

これが私のマークアップの一部です:

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        <asp:Literal ID="timerLit" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>

そして、ここに私のvbがあります:

Protected Sub onTimerElapsed(source As Object, e As ElapsedEventArgs)
    timerLit.Text = "Hello"
    UpdatePanel1.update()
End Sub

私は多くのことを試しました。onTimerElapsed サブルーチンが呼び出されることはわかっており、リテラルが正しいテキストで埋められることもわかっています。update() は何もしていないようです。再度、感謝します!

4

2 に答える 2

1

UpdatePanel は、クライアントからサーバーに対してのみ機能します。あなたが説明しているシナリオは不可能です (少なくとも、あなたが使用している手法では不可能です)。これは、サーバーがクライアントに接続する方法がまったくないためです。

次の 2 つの可能性があります。

  • クライアントからサーバーへのいずれかを実行します(破棄しました)
  • サーバー側から本当にプッシュしたい場合は、SignalR のようなフレームワークを使用します。

SignalR は、クライアント側とサーバー側の配管を実装し、現在のブラウザーで利用できる最適な手法を使用します。

SignalR の詳細については、http ://signalr.net/ を参照してください。

于 2013-05-10T20:54:08.203 に答える
0

サーバー -> クライアントに移動しようとするのではなく、クライアント -> サーバーから移動します。

したがって、javascript で、XXX 秒ごとにコード ビハインドを呼び出すタイマーを作成します。

このようなもの。

var myTimer = setInterval(myMethod, 5000);

function myMethod( )
{
  //this will repeat every 5 seconds
  //you can reset counter here
}

タイマーをクリアし、呼び出してメソッドの呼び出しを停止できます

clearInterval(myTimer);
于 2013-05-10T20:52:08.833 に答える