- - PR -
【ASP.NET】Timer使用時にUpdatePanelを更新させない方法
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-09-04 19:27
Ajax Extensionを使って開発しています。
UpdatePanelにGridViewを配置して、Timerによる 更新処理をさせています。 やりたいことは、Timerで必ず再描画するのではなく、 Timerが発生した時にサーバのデータを取得してきて、そのデータが ブラウザに表示中のデータと異なる場合のみ再描画させたいです。 しかし、Timerが発生すると同時にポストバックが発生する為、 強制的にUpdatePanelが更新されてしまう問題に直面しています。 実装は以下のようにしています。 ・UpdatePanelの外にTimerを配置 ・UpdatePanelの「UpdateMode」は『Always』 なお、「UpdateMode」を『Condensial』に変えて、 UpdatePanelの「Triggers」は『Timer』の『Tick』を設定し、 Timer_Tick()の中で、UpdatePanel.update()を発生させる手段も試しました。 しかしそうすると、 UpdatePanel.update()を呼ばずにTimer_Tick()が 終わった場合に、「無効なポストバックが発生しました」と ブラウザに表示されてしまいます。 Timerの度に再描画させたくないのですが 何か方法はありませんでしょうか。 | ||||||||||||
|
投稿日時: 2008-09-04 23:13
状況がちょっとつかめないです。
ページが更新されてしまうはずですよね。(これを再描画といっています?) UpdatePanelのTriggersにTimerを入れていますか?またはTimerは別のUpdatePanelにある?
ただ表示するだけのGridViewで試していますか? ・TimerもUpdatePanelに入れる。 ・ChildrenAsTriggersをfalseにする ・UpdateModeをConditionalにする これでもTickは発生するので、このときに更新するかしないか判断して UpdatePanel.Update() とするのはどうですか? | ||||||||||||
|
投稿日時: 2008-09-05 01:15
流れぶった切ってすんまそん、状況つかめます、です。
昨日ほぼ同じものをASP.NETではなくてJavaで(ごめん なさい)作りましたから。 まぁかいつまんで言うと、GridViewの展開イメージさえわかれば 割と簡単に実現できそうです。 ViewState までは保証できませんがね。 僕が作ったのは、サーバーログを5秒間隔でポーリングして差分をJSON で取得し、DOMでテーブルの最後尾に追加して、ScrollIntoViewで常に 最下行に移動させて画面を表示して、画面は1000行固定なんで溢れた 行はDOMで消してくみたいなのですね。ログは更新間隔5秒なんで多いと 過去ログがすぐに消えちゃうからタイマーを停止するためのチェックボッ クス付けたりして。 Ajaxはサーバーとの通信にはJSONフォーマットで対応しました。簡単です から。 UpdatePanelで実現したいなら、ちょっと難しいかもしれません。 UpdatePanelはやめて、ただのGridView+AjaxtoolkitのAjax単体と タイマーを使うならまだ出来そうな悪寒がします。 更新行数が最大400行で設定しています。つまりサーバーログの最新を 最大400行引っ張ってくるのですが、今のところ最初の描画だけ5秒以 上掛かりますがあとは1秒〜2秒程度の再描画時間でいけていますね。 再描画完了してから5秒経過で再読み込みなんで実質5秒〜10秒と間隔 に多少ばらつきがありますが。ログ見るためだけのツールなんで問題じゃ ありません、です。 50行程度の更新なら、1秒かからんです。 追記:差分だけを更新したい、ってのは、一度なんにしてもサーバーまで データがあるかどうか確認しに行かなくちゃならないからGridViewは毎回 追加データが無くても更新されちゃいますよねw見た目・行数は変わらな いにしてもスクロール位置が先頭に戻ってしまったり・・・その他色々。 なんで、つまり、UPdatePanelでやるなら、非表示のUpdatePanelをタイマー で動かしつつ、ポストバックしてきたGridViewの更新部分を表の静的なGridView に追加するとか、なんてならもっと簡単に実現できそうな気がします。 [ メッセージ編集済み 編集者: ぴあちゃん 編集日時 2008-09-05 01:25 ] |
1