3

データバインドされた DataGridView があります。その列の 1 つは DataGridViewComboBox です。DataGridViewComboBox もデータバインドされています。DataGridViewComboBox の選択されたアイテムの背後にある DataRow を取得するまで、すべてが正常に機能しています (DataGridView の DataRow ではなく、コンボボックスの DisplayMember と ValueMember を埋めるデータ行です!)。

どうすればこれを達成できますか? DisplayMember と ValueMember の横に大量のデータを表示する必要があり、このデータは DataGridViewComboBox がバインドされている DataTable のデータ行内に存在するため、これが必要です。

事前にご協力いただきありがとうございます。

ダニエル

4

1 に答える 1

1

これについては、この MSDN 記事で詳しく説明しています。

行う必要があるのは、ComboBox 列の ValueMember を、ビジネス オブジェクト自体への参照を返すプロパティに設定することです。

つまり、Employeeオブジェクトがあり、それらのリストが ComboBox 列の DataSource であるとします。従業員はおそらく次のようになります。

public Employee
{
    int Age { get; set; }
    string Name { get; set;}
    Employee Self
    {
        get { return this; }
    }
} 

次に、次のように ComboBox 列を作成します。

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.Name = "Combo";
col.ValueMember = "Self";
col.DisplayMember = "Name";
datagridview1.Columns.Add(col);

次に、ComboBox セルの Value プロパティを取得すると、Employee オブジェクトが返されます。

Employee e = datagridview1.Rows[0].Cells["Combo"].Value as Employee;
于 2011-10-17T09:28:50.757 に答える