In order two have two combobox columns that one is based on the previose one you have to do the following:
* Create a global bindingSource
BindingSource filteredCmbColumn2= new BindingSource();
DataView dv = new DataView(dtCmbColumn1);//create a dataview from the first cmbColumn.
filteredCmbColumn2.DataSource = dv;//secend column's datasource is the dataview from first cmbColumn.
In the event: Cell_BeginEdit()
// Set the combobox cell datasource to the filtered BindingSource
DataGridViewComboBoxCell dgcb = (DataGridViewComboBoxCell)datagridview1[e.ColumnIndex, e.RowIndex];
dgcb.DataSource = filteredCmbColumn2;
// Filter the BindingSource based upon the region selected
this.filteredCmbColumn2.Filter = "..."
In the event Cell_EndEdit()
// Reset combobox cell to the unfiltered BindingSource
this.filteredCmbColumn2.RemoveFilter();