Hola que tal, bueno mira al parecer la sorpresa te la estas llevando tu jejeje

, no quiero que suene a burla, pero lo que quieres hacer ocupas un poco de conocimiento en programacion y un poco de logica
Te voy a dar mi punto de vista ( Yo manejo mas C# ):
1.- En tu DGV tienes que declarar la columna combo.
Seria algo asi:
Código C#:
Ver originalDataGridViewComboBoxColumn ColumnaComboBox = new DataGridViewComboBoxColumn();
ColumnaComboBox.DataSource = La funcion que te regresa la lista;
ColumnaComboBox.Name = Valor del campo a mostrar;
ColumnaComboBox.DisplayMember = "Nombre que se mostraria en el combo";
ColumnaComboBox.ValueMember = Valor del campo a mostrar;
m_Grid.Columns.Add(ColumnaComboBox);
2.- A tu Columna Combo anexar por medio de un datasource los valores que necesitas ( Para esto, te recomiendo el manejo de listas ).
3.- En el evento VALIDATE ocupas saber si la columna es la del combo.
4.- Tomar el valor del combo y consultarlo en la tabla que necesitas y con eso obtener la información necesaria ( Recomendacion maneja un SP, se me hace mas facil el manejo asi ).
Ojo es algo confuso al principio, pero luego te acostumbraras
Por mientras en eso te puedo ayudar. Suerte