我的ComboBox
的显示和值成员设置出现问题。 DataSource
我正在使用的是动态列表。代码如下所示:
.NET
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (o, ea) =>
{
_List = Massive.DB.Current.Query("EXEC cboPlaces").ToList<dynamic>();
};
worker.RunWorkerCompleted += (o, ea) =>
{
cboPlaces.DataSource = _List;
cboPlaces.DisplayMember = "Name";
cboPlaces.ValueMember = "ID";
};
worker.RunWorkerAsync();
SQL存储过程(cboPlaces)
SELECT ID, Name, PostNumber, Region
FROM dbo.Places
ORDER BY Name
我曾经创建了具有成员ID,名称的Place对象列表,这种设置显示和值成员的方式正常工作。但是,当我使用存储过程直接从数据库表获取动态对象列表时,它不起作用。名称和ID是我的存储过程中的选择值,所以我认为它应该以这种方式工作。我得到的错误是:
ArgumentException unhandled by user:
Cannot bind to the new display member.
Parameter name: newDisplayMember
提前致谢!
修改
我更改了从
设置ComboBox
属性的顺序
cboPlaces.DataSource = _List;
cboPlaces.DisplayMember = "Name";
cboPlaces.ValueMember = "ID";
到
cboPlaces.ValueMember = "ID";
cboPlaces.DisplayMember = "Name";
cboPlaces.DataSource = _List;
我不再收到错误,但显示成员是 System.Dynamic.ExpandoObject 而不是地方的名称,即使我可以看到通过调试器从数据库中获取的所有值。有什么建议吗?
注意:这对WPF来说效果很好..太糟糕了我们不能使用它..