我们有customar表包含Cust_ID,Cust_Name等..... 对于此表,Cust_Name不是唯一的,并且一个客户名称可以重复次数。
我从SQL获取数据并绑定到ComboBox(winform)
cmbCustomar.Datasource = GetCustomerData(_LocationID);
cmbCustomar.DisplayMember = "Cust_Name";
cmbCustomar.ValueMember = "Cust_ID";
问题在于:
客户名称:JOHN重复4次,所有Cust_ID都不同 当用户在第一个项目上选择JOHN时,我得到正确的“SelectedValue”
但是如果用户选择第二个或第三个JOHN Combobox项目它总是默认选择第一项(名称为JOHN) 并且SelectedValue总是返回第一个项目值。
我无法找到我做错的地方,请建议。
答案 0 :(得分:1)
请记住,当组合框被填充时,“SelectedValueChanged”事件将被触发。确保在填充组合框之前取消订阅此事件。并在填充数据后再次订阅。
//unsubsribe the event before populating combobox1
this.cmbCustomar.SelectedValueChanged -= new System.EventHandler(this.cmbCustomar_SelectedValueChanged);
cmbCustomar.Datasource = GetCustomerData(_LocationID);
cmbCustomar.DisplayMember = "Cust_Name";
cmbCustomar.ValueMember = "Cust_ID";
//subscribe the event again
this.cmbCustomar.SelectedValueChanged += new System.EventHandler(this.cmbCustomar_SelectedValueChanged);
答案 1 :(得分:0)
看来你对它很陌生。正如我的猜测,由于您的描述不完整,您正在尝试根据组合框的选定文本返回“选定值”。但是,您必须尝试将值a附加到选定的文本并返回该值。它肯定会解决你的问题。
希望它有所帮助。
答案 2 :(得分:0)
尝试更改以下属性:
cmbCustomar.DropDownStyle = DropDownList;
如果您的ComboBox有DropDownStyle = DropDown
,那么ComboBox的“text”部分会尝试匹配它在列表中可以找到的第一个项目,在这种情况下,它会忽略当前所选项目并找到你名单上的第一个“约翰”。