If the comboboxes are blank after the SetDefaultType() method has executed then the most likely reason is that either an incorrect or no value was assigned to each combobox. The question becomes how could that happen?
Your code for getting the default values from the Items collection seems to be correct so I have these simple questions (don't be offended)
1) Is this loop condition correct as it excludes the last row in the DGV?
for (int i = 0; i < dgvSchemaMapped.Rows.Count - 1; i++)
2) Are you using the DataGridView.DataError event. It is almost essential during debugging as the DGV has a nasty habit of swallowing exceptions and the event is often the only way to reveal a problem with the data. For example
comboboxCell.Value = SomethingNotInTheItemsList;
is a data error and will give a blank cell.
3) In the switch is dataType.ToLower() a valid value. I'm asking if any of the switch sections (cases) execute. Possibly add a default case with an exception throw statement to highlight an unexpected values in dataType.
Two comments about the code
That complex index/cast/index/cast/assign one liner is really difficult to understand and splitting it up into individual parts will aid debugging. Only the last two lines need to be inside the switch.
DataGridViewRow row = grid.Rows[i];
DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)row.Cells[3];
DataGridViewComboBoxCell.ObjectCollection items = cell.Items;
KVP defaultItem = (KVP)items[18];
cell.Value = defaultItem.Value;
Why a Dictionary for the combobox items as the BindingSource has to do an implicit conversion to an IBindingList.
Alan.