你们中的一些人可能认为它已经在这个社区的其他地方解决了,但我无法真正解决它。 我有一个组合框,我喜欢它使用DataReader填充。像往常一样,我创建了一个类别以获得设置value member
和display member
。我的代码在下面。ComboBox数据绑定不起作用使用DataReader
using (MySqlCommand cmd = new MySqlCommand("SELECT item_id, item_name FROM items WHERE status='active'", Class_Connection.conn))
{
MySqlDataReader rdr = cmd.ExecuteReader();
ArrayList temptbl = new ArrayList();
while (rdr.Read())
{
//MessageBox.Show(rdr.GetString(1).ToString() + "::" + rdr.GetString(0).ToString());
temptbl.Add(new Class_NameValue(rdr.GetString(1), rdr.GetString(0)));
}
rdr.Close();
// define Display and Value members
cmb_items.DisplayMember = "NameMember";
cmb_items.ValueMember = "IdMember";
// set the DataSource to the DataTable
cmb_items.DataSource = new BindingSource(temptbl, null);
}
一开始设置类如下:
class Class_NameValue
{
private string myNameMember;
private string myValueMember;
public Class_NameValue(string strNameMember,string stringValueMember)
{
this.myNameMember = strNameMember;
this.myValueMember = stringValueMember;
}
public string NameMember
{
get
{
return myNameMember;
}
}
public string IdMember
{
get
{
return myValueMember;
}
}
}
代码编译OK。但是当应用程序运行时,它会给出错误 “Cannot bind to the new display member.Parameter name: newDisplayMember
”
我的代码有什么问题?任何人都可以帮忙吗?
在此先感谢。
我尝试过这一点。不起作用。但是,如果评论ValueMember行,它工作正常。但那样,我没有得到物品的价值。 – 2013-05-09 10:13:06
这意味着任何一个NameMember都没有IdMember,请尝试在sql或mysql编辑器中运行您的查询以检查null IdMember值。 – Rahul 2013-05-09 10:15:03
是'Idmember'是否是主要的列值... – Rahul 2013-05-09 10:21:24