Have one buffer column for each type to contain the id and map each to an appropriate dropdown datawindow. Make the visible expression for each id column for the corresponding type. In the itemchanged event set the real id column. You don't need to show the real id column and the extra id columns can sit on top of each other as only one will ever show.
Obviously if you have many types this is approach is probably not appropriate.