This is detailed in this MSDN article.
What you need to do is set the ValueMember of the ComboBox column to a property that returns a reference to the business object itself.
That is, say you have an Employee
object, and a list of them are the DataSource for the ComboBox column. Employee would perhaps look like this:
public Employee
{
int Age { get; set; }
string Name { get; set;}
Employee Self
{
get { return this; }
}
}
Then you create your ComboBox columns like so:
DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.Name = "Combo";
col.ValueMember = "Self";
col.DisplayMember = "Name";
datagridview1.Columns.Add(col);
Then when you retrieve the Value property of a ComboBox cell you get an Employee object back:
Employee e = datagridview1.Rows[0].Cells["Combo"].Value as Employee;