C# 数据绑定时检索datagridviewcombobox后面的datarow

C# 数据绑定时检索datagridviewcombobox后面的datarow,c#,winforms,data-binding,datagridview,datagridviewcombobox,C#,Winforms,Data Binding,Datagridview,Datagridviewcombobox,我有一个数据绑定的DataGridView。其中一列是DataGridViewComboBox。DataGridViewComboBox也是数据绑定的。在我希望检索DataGridViewComboBox所选项后面的DataRow(不是DataGridView的DataRow,而是填充combobox的DisplayMember和ValueMember的DataRow!)之前,一切都很正常 我怎样才能做到这一点?我之所以需要它,是因为我需要在DisplayMember和ValueMember旁边

我有一个数据绑定的DataGridView。其中一列是DataGridViewComboBox。DataGridViewComboBox也是数据绑定的。在我希望检索DataGridViewComboBox所选项后面的DataRow(不是DataGridView的DataRow,而是填充combobox的DisplayMember和ValueMember的DataRow!)之前,一切都很正常

我怎样才能做到这一点?我之所以需要它,是因为我需要在DisplayMember和ValueMember旁边显示一大堆数据,这些数据存在于DataGridViewComboBox绑定到的DataTable的datarow中

提前谢谢你的帮助

Daniel

这在中有详细说明

您需要做的是将ComboBox列的ValueMember设置为返回对业务对象本身的引用的属性

也就是说,假设您有一个
Employee
对象,其中一个列表是ComboBox列的数据源。员工可能会这样:

public Employee
{
    int Age { get; set; }
    string Name { get; set;}
    Employee Self
    {
        get { return this; }
    }
} 
然后创建组合框列,如下所示:

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.Name = "Combo";
col.ValueMember = "Self";
col.DisplayMember = "Name";
datagridview1.Columns.Add(col);
然后,当检索组合框单元格的Value属性时,将返回一个Employee对象:

Employee e = datagridview1.Rows[0].Cells["Combo"].Value as Employee;

这有两个问题:1。如果DataGridView是数据绑定的,那么您只能为ValueMember分配一个类型,该类型可以插入DataTable并最终插入SQL(如何将“Employee”对象插入int列?),2。我想用DataRow类来做这件事,而不是创建自定义类。@Daniel-据我所知,你不能做你想做的事。我建议使用自定义对象而不是datatables,但是如果您必须拥有datatable,那么最好使用value成员查找所需的datatable行。感谢您的回复。但是,如果使用自定义对象,如何向DataGridView的datatable中添加值?我无法将对象添加到数据表中。顺便说一句,我最终使用ValueMember作为主键在DataTable中进行查找。。。正如你所建议的,它是有效的。但是获取对象本身会更优雅。@Daniel使用自定义对象,您可以创建该对象的列表,该列表是您的数据源。然后您只需将项目添加到该列表中。我总是发现这种方法比使用数据表灵活得多,但这可能就是我:)