在数据绑定时检索datagridviewcombobox后面的数据行

时间:2011-10-17 07:12:04

标签: c# winforms data-binding datagridview datagridviewcombobox

我有一个数据绑定DataGridView。其中一个列是DataGridViewComboBox。 DataGridViewComboBox也是数据绑定。一切正常,直到我希望检索DataGridViewComboBox 所选项后面的DataRow(不是DataGridView的DataRow,而是填充组合框的DisplayMember和ValueMember的数据行!)。

我怎样才能做到这一点?我需要这个,因为我需要在DisplayMember和ValueMember旁边显示一大堆数据,这些数据存在于DataGrid接入的DataTable的数据行中。

感谢你提前得到你的帮助。

丹尼尔

1 个答案:

答案 0 :(得分:1)

详见this MSDN article

您需要做的是将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;