トップ回答者
データベースの 1 レコードを詳しく表示する方法について

質問
-
このページにGridViewで選択した値の詳細データを同じページに表示するサンプルがあります。選択をクリックすると別のページ(default2.aspx)が開いてそこに詳細データが表示されるように書き換えたいのですが、初心者なのでぜんぜんわかりません。
http://www.microsoft.com/japan/msdn/asp.net/tips/DetailsView/
Default.aspxにあったDetailsView1とAccessDataSource2をDefault2.aspxに移動しています。どうすれば選択をクリックすると別のページが開き詳細データを表示できるようになるか教えていただけますか?
よろしくお願いします。
回答
-
詳細データの表示を別画面で行うとのことですので、Default.aspxのGridVewで選択された行を識別するための情報をDefault2.aspxへと引き継いであげる必要があります。
識別するための情報とはサンプルだとPubIDのことです。
どうやってPubIDを引き継ぐかについては、SessionまたはQueryStringのどちらかを使用するのがが良いと思います。
(但し、Sessionの使う場合は、引き継ぎが完了した時点でSessionをクリアすることを検討する必要がありそうです。)
具体的には、
1、GridViewのSelectedIndexChangedイベントでPubIDをSessionまたはQueryStringに格納します。
(Sessionの場合)
Session["PubID"] = (int)GridView1.SelectedValue;
Response.Redirect("Default2.aspx");
(QueryStringの場合)
Response.Redirect("Default2.aspx?PubID=" + GridView1.SelectedValue);
2、Default2.aspxに配置したAccessDataSource2を選択すると出てくる右上の三角ボタンをクリックし[データソースの構成]を選択すると、[データソースの構成]ダイアログが出てくると思います。
そのダイアログを進んでいくと[パラメータの定義]という画面が出てくると思いますが、その画面のパラメータソースでSessionまたはQueryStringを選択してやり、その下のFieldにPubIDと指定してあげれば良いはずです。
動作確認をした訳ではないのですが、基本的にはこんな感じでいけると思います。
もし、画面遷移するのではなく、Default.aspxを表示しつつDefault2.aspxを新規ウィンドウで表示するということであれば、Default.aspxのGridVewの選択ボタンの代わりに自前でHyperLinkFieldを配置してあげて、そのプロパティを以下のように設定すると良いのかなと思います。
DataNavigateUrlFieldsにPubID
DataNavigateUrlFormatStringにDefault2.aspx?PubID={0}
Targetに_blank
すべての返信
-
詳細データの表示を別画面で行うとのことですので、Default.aspxのGridVewで選択された行を識別するための情報をDefault2.aspxへと引き継いであげる必要があります。
識別するための情報とはサンプルだとPubIDのことです。
どうやってPubIDを引き継ぐかについては、SessionまたはQueryStringのどちらかを使用するのがが良いと思います。
(但し、Sessionの使う場合は、引き継ぎが完了した時点でSessionをクリアすることを検討する必要がありそうです。)
具体的には、
1、GridViewのSelectedIndexChangedイベントでPubIDをSessionまたはQueryStringに格納します。
(Sessionの場合)
Session["PubID"] = (int)GridView1.SelectedValue;
Response.Redirect("Default2.aspx");
(QueryStringの場合)
Response.Redirect("Default2.aspx?PubID=" + GridView1.SelectedValue);
2、Default2.aspxに配置したAccessDataSource2を選択すると出てくる右上の三角ボタンをクリックし[データソースの構成]を選択すると、[データソースの構成]ダイアログが出てくると思います。
そのダイアログを進んでいくと[パラメータの定義]という画面が出てくると思いますが、その画面のパラメータソースでSessionまたはQueryStringを選択してやり、その下のFieldにPubIDと指定してあげれば良いはずです。
動作確認をした訳ではないのですが、基本的にはこんな感じでいけると思います。
もし、画面遷移するのではなく、Default.aspxを表示しつつDefault2.aspxを新規ウィンドウで表示するということであれば、Default.aspxのGridVewの選択ボタンの代わりに自前でHyperLinkFieldを配置してあげて、そのプロパティを以下のように設定すると良いのかなと思います。
DataNavigateUrlFieldsにPubID
DataNavigateUrlFormatStringにDefault2.aspx?PubID={0}
Targetに_blank -