简体   繁体   中英

Insert a default row into a combobox that is bound to a datatable?

On a winform there is a combobox that derives its information from a datatable. The datatable draws from a database list.

this.cboList.DataSource = pullData();
this.cboList.DisplayMember = "fieldA";

Once the DataSource is set I am not able to insert a default row (ie *) as the first item in the combobox.

I tried this:

this.cboList.Items.Insert(0,"*");

Is there a way to insert in the combobox after the datasource is set or should this be done in the datatable?

UPDATE1:

The solution looks something like this:

 var list = mydt.AsEnumerable().Select(row => row.Field<string>(fieldName)).ToList();
 list.Insert(0, "*");

Where mydt is a populated datatable and fieldName is a variable holding the database field name.

Don't modify your data at the source just to make your UI work. Instead, perhaps extract your column into a list that you can modify before attaching it to the combo box.

var list = table.AsEnumerable().Select(row => row.Field<string>("fieldA")).ToList();
list.Insert(0, "*");
this.cboList.DataSource = list;

If a "Select None", or "*" is a valid select option it needs to come from the binding source object. I have done this in the past by adding a default record to a collection before binding it to a combo box.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM