You could use the BindableValueList class, which allows you to specify a DataSource/DataMember both through the constructor as well as through individual properties.
-Matt
It seems a little unintuitive, and this threw me off, but you actually need to provide a BindingContext to the BindableValueList; this can be accomplished either through the contructor (in which you can pass in the form as the control for binding context), or you can explicitly set the BindingContext, such as:
BindableValueList bvl = new BindableValueList();bvl.DisplayMember = "Col 2";bvl.ValueMember = "Col 1"; bvl.BindingContext = this.BindingContext;bvl.SetDataBinding(GetTable(), String.Empty);
You would have to add the items to the underlying table. The purpose of the ValueList being bound to an object is that its contents are controlled by that object, and you will get an exception if you try to add a ValueListItem to the BindableValueList. If other objects are bound to this table and you don't want to show them, you may need to clone the table for the ValueList.