You're close but using the wrong properties. DisplayMember
indicates the property on your object to use for the display value. ValueMember
indicates the property on your object that holds the actual value. Set that to DnameID
and see if your problem goes away.
cmdbDriverList.DisplayMember = "Dname";
cmdbDriverList.ValueMember = "DnameID";
Assuming those are names of columns in your table then it should properly bind the data.
Note also that you have 2 calls to set DataSource
. Remove one of them, ideally the first one.