(.Net)カスタムクラスをDataGridViewにバインドしたときに、選択したレコードのオブジェクトを取得する
List<T>を DataGridView にバインドしてるんですが、ユーザーが行を選択した時に選択された行に対応するオブジェクト取得する方法です。
.Net にはそのためのプロパティが用意されていました。
それは、DataGridViewRow.DataBoundItemプロパティです。
詳しくはMSDN:方法 : Windows フォームの DataGridView 行にバインドされたオブジェクトにアクセスするが参考になります。

ただ、行選択モード(DataGridViewSelectionMode)が FullRowSelect にしといたほうが安全ですね。
セルだけ選択した場合は取得できないようなので。。。

とりあえず、サンプルです。(C#)

public partial class Form1 : Form{
List<user> mlst = new List<user>();
 
private void Form1_Load(object sender, EventArgs e) {
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
mlst.Add(new user("hogehoge1", "1"));
mlst.Add(new user("hogehoge2", "2"));
mlst.Add(new user("hogehoge3", "3"));
 
dataGridView1.DataSource = null;
dataGridView1.DataSource = mlst;
}
 
private void button3_Click(object sender, EventArgs e) {
foreach (DataGridViewRow row in dataGridView1.SelectedRows) {
//選択したレコードに対応するオブジェクトを取得
user u =(user)row.DataBoundItem;
Console.WriteLine(u.name + " , " + u.id);
}
Console.WriteLine();
}
}
 
//カスタムクラス(エンティティ)
public class user{
public string name { get; set; }
public string id { get; set; }
public user(string sname, string sid) {
name = sname;
id = sid;
}
}

[PR]
by jehoshaphat | 2010-04-29 23:08 | .Net開発 | Trackback | Comments(0)
トラックバックURL : http://jehupc.exblog.jp/tb/12561433
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。


<< (.Net,ADSI)OUを取... (.Net)サブスレッドからメ... >>