当DataSource是List <dynamic>?</dynamic>时,如何设置ComboBox显示和值成员

时间:2014-07-01 09:47:14

标签: c# winforms dynamic data-binding combobox

我的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来说效果很好..太糟糕了我们不能使用它..

0 个答案:

没有答案