- - PR -
ページ間のデータ受け渡し
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-02-20 14:15
日付取得用のDropDownListを配置したページ(WebForm1.aspx)から
1日のデータの動きを表示するページ(WebForm2.aspx)に日付データを送信して WebForm2.aspx.vb内でグラフをjpeg画像として作成し、 WebForm1.aspxに表示しようと考えています。 このときWebForm1.aspxのDropDownListを表示した下に WebForm2.aspxのグラフ画像を表示したいのですが、 WebForm1.aspxのPage_LoadにServer.Transferメソッドを入れると DropDownListが消えて、グラフ画像のみの表示になってしまいます。 うまく表示するにはどうしたらよいのでしょうか? --------------------------------------- --WebForm1.aspx-- <%@ Page Language="vb" Codebehind="WebForm1.aspx.vb" Inherits="WebForm.WebForm1"%> <HTML> 略 <asp:DropDownList id="ddlYear"></asp:DropDownList> <asp:DropDownList id="ddlMonth"></asp:DropDownList> <asp:DropDownList id="ddlDay"></asp:DropDownList> <img src="WebForm2.aspx"> 略 </HTML> --WebForm1.aspx.vb-- Public Class WebForm1 Inherits System.Web.UI.Page Protected WithEvents ddlYear As System.Web.UI.WebControls.DropDownList Protected WithEvents ddlMonth As System.Web.UI.WebControls.DropDownList Protected WithEvents ddlDay As System.Web.UI.WebControls.DropDownList Private Sub Page_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Server.Transfer("WebForm2.aspx") End Sub Public ReadOnly Property Day() As Date Get Return New Date(CInt(ddlYear.SelectedItem.Text()), _ CInt(ddlMonth.SelectedItem.Text()), _ CInt(ddlDay.SelectedItem.Text())) End Get End Property End Class --WebForm2.aspx-- <%@ Page Language="vb" Codebehind="WebForm2.aspx.vb" Inherits="WebForm.WebForm2"%> <%@ Reference Page="WebForm1.aspx" %> 略 --WebForm2.aspx.vb-- Public Class WebForm2 Inherits System.Web.UI.Page Public wf1 as WebForm1 Private Sub Page_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load wf1 = CType(Context.Handler, WebForm1) Dim day as Date = wf1.Day 'グラフを描く DrawGraph(day) End Sub End Class |
|
投稿日時: 2003-02-20 15:39
Server.Transferは要りません。
<img src="WebForm2.aspx"> とすると、ブラウザはWebForm1.aspxとは別のリクエストをサーバーに送ります。 サーバーから渡されたHTMLソースを見てみると、画像の指定(<img src=...>のような)はありますが、画像のデータは入っていませんよね。 ブラウザは、サーバーから渡されたHTMLを読み、必要な画像をHTMLのやり取りとは別のやり取りで取得します。 WebForm2.aspxは画像を返すように作っておいて、WebForm1.aspxで <img src="WebForm2.aspx"> と書けばOKです。 [ メッセージ編集済み 編集者: 一郎 編集日時 2003-02-20 15:45 ] |
|
投稿日時: 2003-02-20 16:25
お答えありがとうございます。
たぶん、Server.Transferは新しいページ(ここではWebForm2.aspx)を 実行してしまうので、画像のみが表示されてしまうと思うのですが、 そうなると、日付を引数としてWebForm1からWebForm2に渡す方法がよくわかっていません。 なにかよい方法に心当たりはないでしょうか? つくりたいページは、Yahoo!にある株価グラフのように テーブルの中にグラフが表示されて、 さらに過去のデータからも同じように1日のグラフが表示できるようにしたいのです。 |
|
投稿日時: 2003-02-20 16:56
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3487&forum=7
ここに、ページ間のデータ渡しの話題が出ていますが、手軽なのは ○セッションオブジェクトとしておく方法(Page.Session参照) ○"xxx.aspx?txt=abc&pass=def"のように、リクエストURIにくっ付けて送る方法(Page.Request.QueryString参照) 辺りです。 ページ間のデータ渡しとは関係ない話ですが、株価のようなものであれば、誰が見ても同じグラフになるでしょうから、Page.Cacheをうまく使えば何度も同じ作業(同じ画像を作る)をしなくても済むようになるかもしれません。 上のリンクのshuさんの書き込みにありますが、Cacheはどのユーザーでも同じオブジェクトにアクセスできるようです。「株価のようなもの」は一番の使い所だと思います。 |
|
投稿日時: 2003-02-20 17:12
渡すデータが日付とかだったら、
<img src="WebForm2.aspx?datedata=xxxx/xx/xx"> といった形で渡してあげれば、WebForm2.aspx側では Request.QueryString("datedata")といった感じで 日付をとりだせると思います。 |
|
投稿日時: 2003-02-20 18:35
イメージタグにid="idname"を追加して
WebForm1.aspxに Dim image As HtmlImage = FindControl("idname") image.Src="WebForm2.aspx?datedata=xxxx/xx/xx" xxxx/xx/xxはDropDownListから作るようにしたら、うまくいきました。 一郎さん、shuさんありがとうございました。 大変勉強になりました。 |
1