- PR -

DataSetを複数Webフォームで共有するには

1
投稿者投稿内容
WhiteDog
会議室デビュー日: 2003/07/14
投稿数: 2
投稿日時: 2003-07-14 19:09
はじめまして、WhiteDogと申します。

WebフォームAでDBにアクセスし、そこで得たデータを保持したDataSetを、遷移後のWebフォームBで参照したいと思っています。
(具体的には、AでDataGridに表示し、その中のHyperLinkの項目をクリックすると、
Bに遷移して選択されたデータを更新したい)

・Context.Items.Add & Server.Transferを使用する
・WebフォームAで、DataSetを持つクラスを作成し、WebフォームBで見るようにする

というのを試したのですが、どちらもWebフォームBでは空のDataSetになってしまっています。
(Tableの項目は得られているが、中身がからっぽ)

WebフォームAで、クラスをFriend Sharedにしたところ、中身も参照できたのですが、
Sharedは使用しないほうがよいという情報を見ました。

Sharedを使用せずに、別WebフォームでDataSetの値を使用するにはどうすればよいのでしょうか?
よろしくお願いします。
いし
常連さん
会議室デビュー日: 2003/04/15
投稿数: 27
投稿日時: 2003-07-14 19:28
Context.Itemsでもできるような気もするのですが、自分は、
Server.Transferして、遷移先のページでContext.Handlerを
前ページのクラス型でキャストして、プロパティで取得したりしています。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-07-15 10:08
Sessionオブジェクトを使いましょう。
ウィリー
常連さん
会議室デビュー日: 2003/01/24
投稿数: 24
お住まい・勤務地: 千葉県
投稿日時: 2003-07-15 10:53
こんにちは。

マスターDBなら、ApplicationやCacheを利用してみるのもいいと思います。
トランザクションDBならやっぱり、Sessionオブジェクトですね。

厳密に言うと、状況によってどれを利用するかは開発時に判断してください。
それには、Application、Cache、Sessionの性質を理解する必要がありますが。。
WhiteDog
会議室デビュー日: 2003/07/14
投稿数: 2
投稿日時: 2003-07-15 12:01
アドバイスありがとうございました。>いしさん、小野さん、ネームスペースさん

Context.Handlerでもセッションオブジェクトでもやはり中身が渡らず、
根本的にどこかが間違っていると思ったら、元Webフォーム上でボタンを二度押していたのが
原因でした・・・・(一つ目のボタンでDataGridに書き出し、二つ目のボタンで
次のWebフォームに遷移するようにしていた)
ページの先頭でPublic ds As New DataSetしているのだから、それは当然中身が空になりますよね・・・・・・・(Tableの項目は渡せているところで気づくべきでした・・・)

一つ目のボタン内でセッションオブジェクトに格納したところ、無事に次のWebフォームへ
値を引き継ぐことができました。

Webアプリケーションの開発は初めてで、基礎的なことをまだまだ理解できていませんでした。
こんな内容で申し訳ありません・・・。

Application、Cache、Sessionの違いもわかっていませんので、これから勉強します。

本当にありがとうございました。
1

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