Quote Originally Posted by jmcilhinney View Post
Assuming that you have set up the bindings correctly, which you appear to have done, the fact that you're using a combo box column makes absolutely no difference to saving the data. You simply use a data adapter to save the changes from the DataTable bound to the grid with a call to Update, same as you always do. I'll try to explain the process in a bit more detail.

Let's say that you have a Parent table with ParentId (PK) and ParentName columns and a Child table with ChildId (PK), ParentId (FK) and ChildName columns. If you just query the Child table, populate a Datatable and bind that to a DataGridView then you'll see the numeric foreign key values in the ParentId column. If you use a combo box column instead, bind a DataTable populated from the Parent table and set DisplayMember and ValueMember to ParentName and ParentId respectively, the Value of each cell will still be the numeric ParentId value from the Child table but the cell will display the corresponding value from the ParentName column of the Parent column instead. If the user selects a different ParentName value from the drop-down list, it's still the corresponding ParentId value that gets pushed to the Value property of the cell so it's that foreign key value that gets pushed to the underlying DataTable. That means that you just save the DataTable as is and everything works as expected.
I knew it was something easy! Thank you so much for your help.