- PR -

DetailsViewで更新したデータがGridViewに反映されない

1
投稿者投稿内容
BT
ベテラン
会議室デビュー日: 2006/09/24
投稿数: 81
お住まい・勤務地: Tokyo
投稿日時: 2006-09-24 14:27
ウェブアプリケーションに関して、VS2003からVS2005へと切り替えようと、色々と試しているところです。
機能が大きく変わっていて分からない事だらけなのですが、とりあえず件名に関することについて行き詰まってしまったので、アドバイスを頂けたらありがたいです。

やりたいこととしては、FAQをXMLファイルで管理しており、GridViewで一覧表示した中から選択したものを、DetailsViewで更新しようという非常にオーソドックスなパターンになります。
XmlDataSourceだと更新処理ができない(?)ようなので、ObjectDataSourceを作り、ビジネスオブジェクトを介してXMLファイルを操作するようにしました。実際に、単体では読み出し更新、追加、削除、どれも行えています。

しかし、GridView、DetailsView用にそれぞれ別のObjectDataSourceを作成して割り当てた場合、DetailsViewで更新をかけた結果が、即座にはGridViewに表示されません。もちろん、XMLファイル自体は更新されていて、ブラウザを再立ち上げすれば反映されています。

VS2003の時には、このあたりの処理を自分で書かないといけなかったので分かりやすかったのですが、VS2005ではここまでノンコーディングなので背後でどうなっているのかよくわからない状態です。GridView側のObjectDataSourceがSession変数に格納したDataSetを見ているというようなイメージで、何かしら再読み込みをするような処理をしないといけないのかなと想像していますが、どのようにすればよいのでしょうか?

恐らくかなり基本的なことではないかと思いますが、よろしくお願いします。

Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2006-09-24 17:00
諸農です。

引用:

BTさんの書き込み (2006-09-24 14:27) より:

しかし、GridView、DetailsView用にそれぞれ別のObjectDataSourceを作成して割り当てた場合、DetailsViewで更新をかけた結果が、即座にはGridViewに表示されません。もちろん、XMLファイル自体は更新されていて、ブラウザを再立ち上げすれば反映されています。



ObjectDataSourceで試したわけではないのですが、DetailViewのItemUpdatedイベントなどのItemXXXイベントでGridViewのDataBind()を呼び出してもダメでしょうか。

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
BT
ベテラン
会議室デビュー日: 2006/09/24
投稿数: 81
お住まい・勤務地: Tokyo
投稿日時: 2006-09-24 17:51
引用:


ObjectDataSourceで試したわけではないのですが、DetailViewのItemUpdatedイベントなどのItemXXXイベントでGridViewのDataBind()を呼び出してもダメでしょうか。




どうも返答ありがとうございました。
確かに、上のようにやると即座に更新結果が反映されました。

まだまだDataBind()は健在なのですね。大抵の場合、知らないところで呼ばれている(?)ような感じで何もしなくてもよかったので、もう要らないのかと思ってました。(今回も一度Page_Load内で試したのですがエラーが発生してしまって)

同じページ上で他のコントロールの更新結果が反映されないというのは、VS2003でいうと、XxxxUpdated等のメソッドの背後で自コントロールのDataBind()メソッドしか呼び出ししていないというような感じでしょうか。どうせならthis.DataBind()してくれればいいのに・・と思ったけど、トラブルの元なんでしょうかね。

とりあえず、これで移行が進みそうです。
どうもありがとうございました。
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2006-09-24 18:03
諸農です。

引用:

BTさんの書き込み (2006-09-24 17:51) より:

まだまだDataBind()は健在なのですね。大抵の場合、知らないところで呼ばれている(?)ような感じで何もしなくてもよかったので、もう要らないのかと思ってました。(今回も一度Page_Load内で試したのですがエラーが発生してしまって)



補足と言いますか、なんというか(^^;

MSDNドキュメントのDetailsView.ItemUpdated イベントに、DataBindを使ってGridViewに更新情報を反映するサンプルがあったりします(^^;

_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
BT
ベテラン
会議室デビュー日: 2006/09/24
投稿数: 81
お住まい・勤務地: Tokyo
投稿日時: 2006-09-25 18:58
ありがとうございます。ここにありましたか。
調べが足りず失礼しました。

サンプルコードが欲しくて探していたのですが、たぶんDataSourceオブジェクトを二つ置いた事が原因かと思い込んで、MSDNではDataSource周りばかりを探してました。

VS2005はノンコーディングでも結構色々なことができてしまうのですが、実際にはDataBinde()などは背後で動いているだけで、考え方自体はこれまでと同じということでよいのでしょうね。そのあたりが分からずに闇雲ににやっていただけだったのですが、それが分かっただけでもかなりの収穫でした。

どうもありがとうございました。
1

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