组合框显示值成员而不是显示成员

时间:2016-02-18 07:48:45

标签: c# winforms

我有一个名为combobox的{​​{1}},我在cmbEmployeeNo填充了dataset

runtime

但不是显示" private void populateEmployees() { try { cmbEmployeeNo.DataSource = objNoPayBLL.getEmployees(); cmbEmployeeNo.DisplayMember = "NAME_INI"; cmbEmployeeNo.ValueMember="EMP_NO"; } catch (Exception Ex) { MessageBox.Show(Ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } "它始终显示" NAME_INI"当它被填充时。

EMP_NO方法正确提供数据。

我有相同的objNoPayBLL.getEmployees()和另一种形式的填充方法,它按预期工作正常。但是这个没有。

请帮帮我。

4 个答案:

答案 0 :(得分:0)

这种类型的绑定在后台发生了很多验证,尝试最后设置数据源并查看是否有帮助

Clear

答案 1 :(得分:0)

我意外地发现了这个错误,对我来说这很奇怪。

cmbEmployeeNo组合框的数据源的oracle查询(这里我用objNoPayBLL.getEmployees()方法访问它)如下:

SELECT  A.EMP_NO,UPPER(P.NAME_INI) FROM  EMP_PROFILE P,EMP_ALLOCATION A WHERE A.EMP_NO=P.EMP_NO ORDER BY P.NAME_INI

我需要姓名缩写的员工姓名,所以我在这里使用 UPPER(P.NAME_INI)。但是当我删除UPPER(P.NAME_INI)并将其更改为 P.NAME_INI 组合框正确显示显示成员。

SELECT  A.EMP_NO,P.NAME_INI FROM  EMP_PROFILE P,EMP_ALLOCATION A WHERE A.EMP_NO=P.EMP_NO ORDER BY P.NAME_INI

这个神谕资本和简单用C#组合框怎么办?

答案 2 :(得分:0)

DataGridView DisplayMember和您的数据库coulmn名称都应该匹配,否则它将抛出异常。尝试为UPPER使用某些别名(P.NAME_INI)。我认为这样可行。

答案 3 :(得分:0)

NAME_INI,您的展示会员,需要实施为吸气剂/装定者

我遇到了同样的问题,问题是我的DataSource类上的DisplayMember没有get方法而ValueMember没有。组合框类期望这些不仅仅是成员,而是获取属性,因此当它没有看到DisplayMember的get属性时,它会无声地失败并使用ValueMember作为默认值。