WinForm中绑定ComboBox数据出错:无法绑定到新的显示成员!

chengduforest 2006-02-12 07:32:37
运行错误提示:

无法绑定到新的显示成员。
参数名: newDisplayMember

代码如下:
DataTable dt = new DataTable();
string SQLText = "Select SuitID,SuitName from dtSysUnit Order by SortNo";

dt = oData.GetDataTable(SQLText);
paComboBox.DataSource = dt;
paComboBox.ValueMember = "SuitID"; *********出错行!
paComboBox.DisplayMember = "SuitName";
...全文
1401 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jordanbird 2006-03-30
  • 打赏
  • 举报
回复
我和你遇到一样的问题,不过我是oracle数据库,要显示的列名用大写就行了,DataSource不能用DataSet, 用DataTable才行
xli520 2006-02-13
  • 打赏
  • 举报
回复
/// <summary>
/// 初始化ComboBox列表框
/// </summary>
/// <param name="combobox">ComboBox控件名称</param>
/// <param name="sql">SQL语句</param>
/// <param name="name">要显示的名字(DisplayMember)</param>
/// <param name="dm">值(ValueMember)</param>
/// <param name="b">b为true,文本部分可编辑;b为false,文本部分不可编辑</param>
public void InitComboBox(ComboBox combobox,string sql,string name,string dm,bool b)
{
DataSet dataset;
try
{
dataset = DbHelper.Query(sql);
combobox.DataSource = dataset.Tables[0];
combobox.DisplayMember = name;
combobox.ValueMember = dm;
if(b == true)//文本部分可编辑
{
combobox.DropDownStyle = ComboBoxStyle.DropDown;
}
else//文本部分不可编辑
{
combobox.DropDownStyle = ComboBoxStyle.DropDownList;
}
dataset.Dispose();
}
catch(System.Exception er)
{
//获取数据源出错,则置文本部分可编辑
combobox.DropDownStyle = ComboBoxStyle.DropDown;
MessageBox.Show("获取代码值错误。错误信息:"+er.Message);
}
}
kkk_visual 2006-02-13
  • 打赏
  • 举报
回复 1
这样来做:
ArrayList arr = new ArrayList();
foreach(DataRow dr in dt.Tables["word"].Rows)
{
arr.Add(new myword(dr["SuitID"],dr["SuitName"]));
}
paComboBox.DataSource = arr;
paComboBox.ValueMember = "GetSuitID";
paComboBox.DisplyMember "GetSuitName";

protected struct myword
{
private object suitID;
private object suitName;
public object GetSuitID
{
get { return suitID; }
}

public object GetSuitName
{
get { return suitName; }
}
}
lovvver 2006-02-13
  • 打赏
  • 举报
回复
你这样检测一下:
1。再次检查大小写的问题,因为数据库表中字段、select语句、以及paComboBox.ValueMember = "SuitID"三处有这个字段名,你关键要保证后两者之间一致。
2。dt有没有数据;

另外,这本是比较简单的问题,一般出现问题,肯定是在一些细节处一不小心搞错了。
chengduforest 2006-02-13
  • 打赏
  • 举报
回复
回复人: youyuan1980(水云间) ( ) 信誉:92 2006-2-12 22:06:57 得分: 0



DataSet dt = new DataSet();
string SQLText = "Select SuitID,SuitName from dtSysUnit Order by SortNo";
SqlDbadapter da=new sqldbadapter(sqltext,myconn);
da.fill(dt,"word");
paComboBox.DataSource = dt.Tables["word"].defaultview;
paComboBox.ValueMember = "SuitID";
paComboBox.DisplayMember = "SuitName";
这样就可以了。

==============================================================================
试过了,也不行的
chengduforest 2006-02-13
  • 打赏
  • 举报
回复
复人: lovvver(春晖) ( ) 信誉:100 2006-02-13 10:08:00 得分: 0


ComboBox的DataSource是DataTable,不是DataSource。
SuitID要和dt中的列名一致,大小写都要一致。


=====================================================
ComboBox中的DataSource用的是DataTable,SuitID和SuitName和dt中的列名大小写一致的,可还是不行啊
lovvver 2006-02-13
  • 打赏
  • 举报
回复
ComboBox的DataSource是DataTable,不是DataSource。
SuitID要和dt中的列名一致,大小写都要一致。
chengduforest 2006-02-13
  • 打赏
  • 举报
回复
继续顶...
chengduforest 2006-02-13
  • 打赏
  • 举报
回复
再顶!
chengduforest 2006-02-13
  • 打赏
  • 举报
回复
dt里面有记录的
idiotzeng 2006-02-13
  • 打赏
  • 举报
回复
>> DataTable dt = new DataTable();
>> string SQLText = "Select SuitID,SuitName from dtSysUnit Order by SortNo";
>>
>> dt = oData.GetDataTable(SQLText);

dt里面有记录吗?
yuewenbin 2006-02-13
  • 打赏
  • 举报
回复
是Oracle数据库么?
全该为大写看看怎么样?
chengduforest 2006-02-13
  • 打赏
  • 举报
回复
SuitID、SuitName的大小写没有问题,SuitID也没有重复值,郁闷ing...
chengduforest 2006-02-13
  • 打赏
  • 举报
回复
我也认为这原本就是很简单的问题,可没想到ComboBox的使用这么麻烦,搞了两天都没搞定,原来用.net做B/S时都用的是DropDownList,用起来很方便,真没想到WinForm下的ComboBox这么烦人,有哪位用过的兄弟帮帮忙啊
feiyun0112 2006-02-13
  • 打赏
  • 举报
回复
SuitID会不会有重复值
chengduforest 2006-02-12
  • 打赏
  • 举报
回复
楼上的代码是用DataSet代替了DataTable,难道ComboBox的DataSource不能使用DataTable?
youyuan1980 2006-02-12
  • 打赏
  • 举报
回复
DataSet dt = new DataSet();
string SQLText = "Select SuitID,SuitName from dtSysUnit Order by SortNo";
SqlDbadapter da=new sqldbadapter(sqltext,myconn);
da.fill(dt,"word");
paComboBox.DataSource = dt.Tables["word"].defaultview;
paComboBox.ValueMember = "SuitID";
paComboBox.DisplayMember = "SuitName";
这样就可以了。
chengduforest 2006-02-12
  • 打赏
  • 举报
回复
元宵节高手都走了。。。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧