简单的combox数据绑定,我写了一个方法,绑定时报错!public void DropBind(string sql,ComboBox D1,string TField,string VField)
{
try
{
D1.Items.Clear();                  //执行sql查询语句取得数据集(包含字段:classname,classid)
DataSet ds = db.GetDSWithStrSql(sql);  D1.DataSource=ds.Tables[0].DefaultView;                  //参数VField="classid"
D1.ValueMember = VField;
                  //参数TField="classname"
D1.DisplayMember = TField;
                  //设置第一行为空
D1.Items.Insert(0,"");
}
catch(System.Exception err)
{
MessageBox.Show("错误:" + err.Message,"错误信息",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
但是调用此方法时报错!错误信息为:
错误信息1:无法绑定到新的显示成员
           参数名:newDisplayMember错误信息2:在设置DataSource属性之后,无法修改Items集合请高手知道原因何在?

解决方案 »

  1.   

    查看一下你的数据源是不是有TField字符串中描述的这个字段?
      

  2.   

    在设计界面中你是否已经对ComboBox进行了绑定?
    或者这个方法执行了两次或以上如同错误信息2的提示所说,在对某个ComboBox进行数据绑定之后,就不能执行
    D1.Items.Clear();   了!
      

  3.   

    D1.DisplayMember = TField;
                      //设置第一行为空
    DataRow dr  = dt.NewRow();
    dr = dt.NewRow();
    dr["id"]="4";
    dr["name"]="d";
    ds.Tables[0].Rows.InsertAt(dr,0);
      

  4.   

    楼主是不是想,把数据库的一列帮定到Combox上,如果是的话很简单的
    combox属性DataBinding中的简单绑定中选择要绑定的列即可。
      

  5.   

    看一下
             //参数VField="classid"
    D1.ValueMember = VField;
                      //参数TField="classname"
    D1.DisplayMember = TField;是否错误。
      

  6.   

    看一下
             //参数VField="classid"
    D1.ValueMember = VField;
                      //参数TField="classname"
    D1.DisplayMember = TField;是否错误。
      

  7.   

    D1.Items.Insert(0,"");是错误的, alien54155415() 的回答是对的,你绑定后的Item类型为DataRowView类型.
      

  8.   

    将此句D1.Items.Insert(0,"");注释掉,还是报出同样的错误!