- PR -

[ASP.NET Ajax] UpdatePanelの中のGridViewの表示が更新されない

1
投稿者投稿内容
ニッシー
常連さん
会議室デビュー日: 2008/05/21
投稿数: 28
投稿日時: 2008-07-08 14:15
いつもお世話になっております。
初心者でございます。

■やりたいこと
クライアントからポーリングでDBを参照して、変更箇所があれば画面表示させる。
ページのリロードではなく、変更箇所だけ変化させたい。

■やったこと
UpdatePanelの中にGridViewとTimerを入れました。
Timerは5秒ごとにTickイベントを発行し、Tickイベント内でUpdatePanelを更新しています。(UpdatePanel1.Update())
これで5秒ごとにDB変更が自動的に反映されるはずと思いましたが、いっこうに変化しない。
デバックの要素含めてUpdatePanelの中と外にに日時表示するラベルを貼り付けて、ラベルのLoad時に、その瞬間の日時をセットするようにした。
結果、UpdatePanel内の時刻表示ラベルは更新されますが、Updatelabel外の時刻表示ラベルは更新されない。ってことはUpdatePanelは5秒ごとに更新されている。
ページをリロードすると、DBの反映が表示される。

なにぶん初心者で。。。やり足りないことや、違うよ的な情報をいただけましたら幸いです。
よろいしくお願いいたします。
ニッシー
常連さん
会議室デビュー日: 2008/05/21
投稿数: 28
投稿日時: 2008-07-08 15:27
自己回答
TickEvent内で
GridView1.DataBind()
でデータが反映されました。もう少しいじってみます。

べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-07-08 21:38
GridViewのEnableViewStateをfalseにすればDataBindはいらないと思います。

あと、一回目はGridViewのデータがでるようになってるんですよね。であれば
UpdatePanelのUpdateModeをtrueにしておけばUpdatePanel1.Updateもいらないと思います。
他のコントロールとの絡みがあるならしょうがないですが。
ニッシー
常連さん
会議室デビュー日: 2008/05/21
投稿数: 28
投稿日時: 2008-07-08 22:16
ありがとうゴザイマス。
ご指摘のとおり、
 GridViewのEnableViewStateをfalse → DataBind不要
 UpdatePanelのUpdateModeをConditional → updatepanle1.update()不要
でした。

結果的にTimerでTickイベントを発生してあげるだけでDBの最新情報が表示されるようになりました。
1

スキルアップ/キャリアアップ(JOB@IT)