I have a combo box on a WinForms app in which an item may be selected, but it is not mandatory. I therefore need an \'Empty\' first item to indicate that no value has been s
There are two things you can do:
Add an empty row to the DataTable
that is returned from the stored procedure.
DataRow emptyRow = hierarchies.NewRow();
emptyRow["guid"] = "";
emptyRow["ObjectLogicalName"] = "";
hierarchies.Rows.Add(emptyRow);
Create a DataView and sort it using ObjectLogicalName column. This will make the newly added row the first row in DataView.
DataView newView =
new DataView(hierarchies, // source table
"", // filter
"ObjectLogicalName", // sort by column
DataViewRowState.CurrentRows); // rows with state to display
Then set the dataview as DataSource
of the ComboBox
.
If you really don't want to add a new row as mentioned above. You can allow the user to set the ComboBox
value to null by simply handling the "Delete" keypress event. When a user presses Delete key, set the SelectedIndex
to -1. You should also set ComboBox.DropDownStyle
to DropDownList
. As this will prevent user to edit the values in the ComboBox
.