none
データベースの 1 レコードを詳しく表示する方法について RRS feed

  • 質問

  • このページにGridViewで選択した値の詳細データを同じページに表示するサンプルがあります。選択をクリックすると別のページ(default2.aspx)が開いてそこに詳細データが表示されるように書き換えたいのですが、初心者なのでぜんぜんわかりません。

    http://www.microsoft.com/japan/msdn/asp.net/tips/DetailsView/

    Default.aspxにあったDetailsView1とAccessDataSource2をDefault2.aspxに移動しています。どうすれば選択をクリックすると別のページが開き詳細データを表示できるようになるか教えていただけますか?

    よろしくお願いします。

    2006年11月17日 12:24

回答

  • 詳細データの表示を別画面で行うとのことですので、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




    2006年11月17日 22:43

すべての返信

  • 詳細データの表示を別画面で行うとのことですので、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




    2006年11月17日 22:43
  • 完璧なご説明ありがとうございます。助かりました。

    QueryStringを使って簡単に目的を達成することができました。

        Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
            Response.Redirect("Default2.aspx?PubID=" & GridView1.SelectedValue)
        End Sub

     

    2006年11月18日 1:27