The combo box has two properties that determine where it loads the data:
DisplayMember ValueMember
The "ValueMember" property determines which named field fills the ListItem "ValueProperty". That way, when you do combobox.SelectedItem.Value , you get the value stored in the named field that you specified for "ValueProperty".
Assuming you're sure your query returns strings, maybe try adding items "manually" rather than relying on automatic data binding.
private void GetOutlets() { BOStockTransfer obj_StockTransfer = new BOStockTransfer(); DataSet ds_OutletList = obj_StockTransfer.GetOutlets(connectionString); cmdoutletID.DisplayMember = "outletId"; cmdoutletID.ValueMember = "pkID"; cmdoutletID.BeginUpdate(); try { cmdoutletID.Items.Clear(); foreach (var row in ds_OutletList.Tables[0].Rows) cmdoutletID.Items(new { outletid = row["outletid"], pkID = row["primaryKeyIDFieldName"] }); } finally { cmdoutletID.EndUpdate(); } }
source share