none
GridViewで選択された行の内容を、グリッド表の外のTextBox に表示するには? RRS feed

  • 質問

  • ASP.NET 5 でGridViewで選択された行の内容を、(表は横にながく見づらいので)、グリッドとは別に、

    TextBoxを列数分用意して、それぞれに、行の各列の値を表示したいと考えています。

    GridViewのSelectedIndexChangedイベントで、各TextBoxに値をセットすれば、望みの結果は

    得られますが、

    もっと、スマートというか、TextBoxとGridView(もしくはデータソース)の各列を結びつける(バインド的な)設定だけで、

    やるにはどうすればいいでしょうか?

        Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) _
            Handles GridView1.SelectedIndexChanged
            If GridView1.SelectedRow IsNot Nothing Then
                TextBox1.Text = GridView1.SelectedRow.Cells(1).Text
            End If

        End Sub

    よろしくお願い致します。




    2016年2月3日 7:21

回答

  • 画像があると質問者さんのやりたいことのイメージがつかみやすいと思ってお待ちしていたのですが、画像をアップすることはできなそうなので、とりあえずの案をレスしておきます。

    > グリッドとは別に、TextBoxを列数分用意して、それぞれに、行の各列の値を表示したいと考えています。


    「TextBoxを列数分用意」にはこだわらないと思いますが、そうであれば「行の各列の値」は DetailsView または FormView で表示するという案はいかがですか?

    ScriptManager, UpdatePanel, Ajax Control Toolkit の ModalPopupExtender も組み合わせて使うとかなりスマートになると思います。以下のような感じです。

    ModalPopup で編集・更新操作
    http://surferonwww.info/BlogEngine/post/2010/10/14/Select-edit-and-update-using-2-pages.aspx

    上記は編集・更新を行うようにしているのでコードがちょっと複雑ですが、表示だけならかなりシンプルにできます。


    その前に、「表は横にながく見づらい」ということを解消するために以下のような手段を取ることも検討されてはいかがでしょう?

    GridView に overflow 適用
    http://surferonwww.info/BlogEngine/post/2015/11/10/apply-overflow-to-a-column-of-gridview.aspx

    上記が質問者さんのやりたいことと合わない場合は、もう少し詳しくやりたいことのイメージがつかめるように書いてください。

    2016年2月4日 0:15
  • > 教えて頂いた ”ModalPopup で編集・更新操作” のページでは、一覧表と更新入力を
    > 1ページで行うのは不可能に近いと書かれていました。

    それは以下の記述ですね? 紛らわしかったようですみません。

    "1 ページで行うか、2 ページ使う場合は一覧画面 → 編集画面 → 一覧画面と遷移していけば難しくありませんが、上記のように開いたままの一覧画面に、編集画面による更新結果を反映するのは難しいです(というよりほとんど無理と思います)。"

    その意味は、

    (1) 同一 Page 上に GridView と DetsilsView を配置して編集・更新操作を行うのは何も難しいことはありません。

    (2) 2 Page 使って、例えば List.aspx で一覧表示し Edit.aspx でレコードの編集・更新を行う場合は、List.aspx ⇒ Edit.aspx ⇒ List.aspxと遷移しながら行えば難しくはない。

    (3) 2 つのページ List.aspx と Edit.aspx を同時にブラウザの別画面に開いて編集・更新操作を行うのは難しい。

    ということです。

    2016年2月4日 5:18

すべての返信

  • > ASP.NET 5 でGridViewで選択された行の内容を、

    ASP.NET 5 というと下記の記事で言う「クロスプラットフォームでクラウドに最適化された」という次世代 Web アプリ用フレームワークを想像しましたけどそうなんですか?

    ASP.NET 5の紹介
    http://codezine.jp/article/detail/8537

    そうではなくて、従来の ASP.NET 2.0 ~ 4.5 Web Forms アプリの話でいいのでしょうか?

    あと、図が表示されていません。修正お願いします。

    2016年2月3日 8:50
  • > ASP.NET 5

     間違えました ASP.NET 4.5 Web Forms  です

    図を追加しようとしているのですが、うまくいきません。しばらくお待ちを


    2016年2月3日 9:16
  • 画像があると質問者さんのやりたいことのイメージがつかみやすいと思ってお待ちしていたのですが、画像をアップすることはできなそうなので、とりあえずの案をレスしておきます。

    > グリッドとは別に、TextBoxを列数分用意して、それぞれに、行の各列の値を表示したいと考えています。


    「TextBoxを列数分用意」にはこだわらないと思いますが、そうであれば「行の各列の値」は DetailsView または FormView で表示するという案はいかがですか?

    ScriptManager, UpdatePanel, Ajax Control Toolkit の ModalPopupExtender も組み合わせて使うとかなりスマートになると思います。以下のような感じです。

    ModalPopup で編集・更新操作
    http://surferonwww.info/BlogEngine/post/2010/10/14/Select-edit-and-update-using-2-pages.aspx

    上記は編集・更新を行うようにしているのでコードがちょっと複雑ですが、表示だけならかなりシンプルにできます。


    その前に、「表は横にながく見づらい」ということを解消するために以下のような手段を取ることも検討されてはいかがでしょう?

    GridView に overflow 適用
    http://surferonwww.info/BlogEngine/post/2015/11/10/apply-overflow-to-a-column-of-gridview.aspx

    上記が質問者さんのやりたいことと合わない場合は、もう少し詳しくやりたいことのイメージがつかめるように書いてください。

    2016年2月4日 0:15
  • 詳しく教えて頂いてありがとうございます。

    独習 ASP.NET 5で ASP.NETの世界に足を踏み入れたばかりの私には、消化するのにもう少し時間が必要ですが、勉強します。

    元々、VB6で作成された画面がありまして、今回 ASP.NET で実装し直そうとしています。

    VB6では 1画面上に、一覧表のグリッドと、選択された行の内容を表示するTextBox と 保存ボタンがあります。

    TextBox から DataFieldプロパティを使って、グリッドの選択行のカラムにバインドできていました。

    それと同じようなことができないかな と思って質問してみました。

    教えて頂いた ”ModalPopup で編集・更新操作” のページでは、 一覧表と更新入力を

    1ページで行うのは不可能に近いと書かれていました。そのあたりをもう少し調べてみたいと思います。

    たぶんUpdatePanelに活躍してもらえば。。

    2016年2月4日 2:23
  • > 教えて頂いた ”ModalPopup で編集・更新操作” のページでは、一覧表と更新入力を
    > 1ページで行うのは不可能に近いと書かれていました。

    それは以下の記述ですね? 紛らわしかったようですみません。

    "1 ページで行うか、2 ページ使う場合は一覧画面 → 編集画面 → 一覧画面と遷移していけば難しくありませんが、上記のように開いたままの一覧画面に、編集画面による更新結果を反映するのは難しいです(というよりほとんど無理と思います)。"

    その意味は、

    (1) 同一 Page 上に GridView と DetsilsView を配置して編集・更新操作を行うのは何も難しいことはありません。

    (2) 2 Page 使って、例えば List.aspx で一覧表示し Edit.aspx でレコードの編集・更新を行う場合は、List.aspx ⇒ Edit.aspx ⇒ List.aspxと遷移しながら行えば難しくはない。

    (3) 2 つのページ List.aspx と Edit.aspx を同時にブラウザの別画面に開いて編集・更新操作を行うのは難しい。

    ということです。

    2016年2月4日 5:18