- PR -

IFRAMEでのObject渡し・共有について

投稿者投稿内容
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2003-06-25 09:13
引用:

あと、ViewStateはページ間では渡せなかったかと。。。


Server.Transfer()を使用してWebページのクラスを継承すれば可能です。

コード:
Sender.aspx:
Sub Page_Load()
  Customers = CreateDataSet()
  Server.Transfer("Receiver.aspx") 
End Sub

Property Customers() As DataSet    
  Get
    Dim obj As Object = ViewState("Customers")
    If obj Is Nothing Then
      Return Nothing
    End If
    Return CType(ViewState("Customers"), DataSet)
  End Get
    
  Set(ds As DataSet)
    ViewState("Customers") = ds
  End Set    
End Property

Receiver.aspx:
Sub Page_Load()
  If Not IsPostBack Then
    Dim wf As SenderClass = _
      CType(Context.Handler, SenderClass)
    DataGrid1.DataSource = wf.Customers
    DataGrid1.DataBind()
  End If
End Sub


ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-06-25 09:30
引用:
ASPXファイル(A)内のサーバ側処理でDBから値を取得しDataSetで保持して
おり、そのDataSetを(A)内にあるIFRAMEのASPXファイル(B)内で再利用
したいのですが、どのように渡せばよいか、またはどのように共有すればよいか
わかりません。


以前DataSetをxml形式でファイルに保存し、
(A)から(B)にはファイル名を渡すような感じで共有しました。
よほど大きなサイズにならない限り、レスポンスよく動いています。

ファイルを削除する処理等も作らなければなりませんでしたが、
メモリ使用量やネットワーク負荷を考えると、
その時はベストな方法でした。

ご参考になれば。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-06-25 11:12
引用:

Mr.ADO.NETさんの書き込み (2003-06-25 09:13) より:
引用:

あと、ViewStateはページ間では渡せなかったかと。。。


Server.Transfer()を使用してWebページのクラスを継承すれば可能です。



まぁ、言葉の使い方の問題だけなんですが。。。

提示されたサンプルはViewStateをページ間で渡しているわけでは
ないですよね。
ページ間のデータ渡し、ということではDataSet型のプロパティを
利用できるようにしているだけで、ViewStateは関係ありませんね。

あと、「クラスを継承している」わけではなく、クラスのインスタンスを
参照できるようにしているだけですね。

細かいとこですが。。。(^^;
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2003-06-25 11:45
引用:

まぁ、言葉の使い方の問題だけなんですが。。。



ご指摘ありがとうございます。
今後とも、ご指導のほどよろしくお願いします。

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