- PR -

DataGridViewのカレント行の値取得

投稿者投稿内容
AlexSuns
会議室デビュー日: 2005/03/14
投稿数: 5
お住まい・勤務地: 桜島のちかく
投稿日時: 2007-11-12 16:22
DataGridView のデータソースに BindingSource を使用するととても便利です

しかし、何らかの事情で(DataSetに)キーが入っていない時はどうなるでしょうか?
または、表示上でキーを非表示にしている場合もしかり


表示上のデータから選択行データを取得するには、型を意識すれば簡単に取得できます
下記ページが参考になると思います
Windows フォームの DataGridView 行にバインドされたオブジェクトにアクセスする


良く聞かれることですので、これで済むと思います
[C#]
System.Windows.Forms.DataGridViewRow dgr = dataGridView1.CurrentRow;
System.Data.DataRowView drv = (System.Data.DataRowView)dgr.DataBoundItem;
System.Data.DataRow dr = (System.Data.DataRow)drv.Row;
K-Kei
会議室デビュー日: 2004/09/01
投稿数: 7
投稿日時: 2007-11-12 17:18
お世話になります。かずくんさんには色々とアドバイスいただきましたが
何とか自己解決できました。ありがとうございました。

[quote]
かずくんさんの書き込み (2007-11-12 14:49) より:
マスタメンテに適用されるような、一覧−明細形式の画面何ですよね。
そして、一覧側で選択した行の詳細を明細側に表示する構成なのですよね。
もしそうなら、まずは[url=http://www.atmarkit.co.jp/fdotnet/special/win20review02/win20review02_02.html].NET Framework 2.0のWindowsフォーム新機能(後編)[/url](atmarkit.co.jp)を読まれることをお勧めします。

詳細は、上記サイトを見ていただくとして、
DataGridViewのDataSourceとしてDataSetを指定するのではなく
DataGridView -- BindingSource -- DataSetと間に一枚はさむ構成をとらせます。
他の明細も同様に、一枚はさむ構成をとらせます。

たったこれだけのことで
[quote]
で、ここからが本題なのですが、先にも書きました通り、DataGridViewの
SelectionModeプロパティにFullRowSelectをセットし、DataGridViewのセルを
選択すると、その行全体が選択される、つまりフォーカスが当たるように設定を
しているのです。

と、ここまでが前提条件です。問題はこの後で
どこでもいいのですが、ある行を選択したとして、そこには機種、型式、機番といった
情報が入っているとします。
その情報を、3つのテキストボックスにバラバラに表示したいだけなのです。
たったそれだけのことなのですが
[/quote]
が、できてしまうという寸法。

まずは、上記のサイトを読んで見てください。
ただこれだけでは、なぜ実現できるかという部分が抜けてしまうので、
できればその後、MSDNにて、なぜの部分を勉強してみてください。
[/quote]

http://www.atmarkit.co.jp/fdotnet/dotnettips/521dgvselectedcells/dgvselectedcells.html

上記サイトの記事において目的を達することができました。
かずくんさん、いろいろご教授いただき、ありがとうございました。
かずくんさんに教えていただいた情報も、参考にさせていただき、勉強させて
いただきます。本当にありがとうございました。

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