0

我正在尝试设置组合框的值成员。上面的两行对于另一个字段具有几乎相同的代码,并且工作正常。

cboCommodity.DataSource = rwDB.getCommodities();
cboCommodity.DisplayMember = "Description";
cboCommodity.ValueMember = "Com. ID#"; //<< Throws exception

rwDB.getCommodities()DataTable从查询视图的存储过程返回一个对象。

我得到错误: Cannot bind to the new value member. Parameter name: value

我已经在谷歌上搜索过,但似乎没有任何帮助。

此列中没有空值。我验证了列名,它存在。这一列是桌子上的pk。我试过括号"[Com. ID#]"。我也看过转义句号和 # 但不是必需的。我正在使用前面语句中的视图中的一列,该列可以正常工作,其中包含一个空格。当执行停止并且列被列为已键入时,我什至查看了当地人(并复制粘贴了值,只是为了安全起见),我只是无法让它工作并且错误对我来说不够详细我自己弄清楚。在这个项目中我已经完成了 50 次的事情,至少可以说令人沮丧。

这是 sp 返回的内容。我试着把它放进VendorValueMember,它工作得很好。我不确定是什么导致了第一列的问题。

SP返回的示例图像

我确信这是我忽略的一些非常愚蠢的事情,就像我提出的大多数问题一样。感谢您的时间。

4

1 回答 1

0

试试下面

DataTable dt = rwDB.getCommodities(); 
var column = dt.Columns.Cast<DataColumn>().FirstOrDefault().ColumnName;
cboCommodity.DataSource = dt;
cboCommodity.DisplayMember = "Description";
cboCommodity.ValueMember = column;

编辑

如果没有其他选项,您可以更改列名

DataTable dt = rwDB.getCommodities();
dt.Columns["Com. ID#"].ColumnName = "ComID";
cboCommodity.DataSource = dt;
cboCommodity.DisplayMember = "Description";
cboCommodity.ValueMember = "ComID";
于 2013-05-06T13:43:45.113 回答