我有一个名为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()
和另一种形式的填充方法,它按预期工作正常。但是这个没有。
请帮帮我。
答案 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作为默认值。