With respect to your code snippets, you have both "Type" and "type". These mappingnames are case sensitive.
So, changing that might get your code running.
Instead of using the CellClick event, you might want to try the CurrentCellValidated event, and if it is your 'master' that has been changed, go ahead and set the datasource for the slave column.
If you really want to do it at the point of dropdown, then try catching the CurrentCellShowingDropdown event, and in that event set the ListBox that is used in the dropdown.
private void gridDataBoundGrid1_CurrentCellShowingDropDown(object sender, GridCurrentCellShowingDropDownEventArgs e)
{
GridCurrentCell cc = this.gridDataBoundGrid1.CurrentCell;
//create or get the table somehow
table = new DataTable();
.....
//make dropdown list use this new table....
ListBox listBox = ((GridComboBoxCellRenderer)cc.Renderer).ListBoxPart;
listBox.DataSource = null;
listBox.DisplayMember = "Item";
listBox.ValueMember = "ItemID";
listBox.DataSource = restrictedForeignTable;
listBox.BindingContext = this.BindingContext;
}