for (int i = 0; ds.Tables["clientType"].Rows.Count > i; i++)
            {
                this.cbbClientType.Items.Add(ds.Tables["clientType"].Rows[i]["clientTypeName"].ToString());
                this.cbbClientType.ValueMember = ds.Tables["clientType"].Rows[i]["id"].ToString();
                TreeNode node = new TreeNode(ds.Tables["clientType"].Rows[i]["clientTypeName"].ToString());
                node.Tag = ds.Tables["clientType"].Rows[i]["id"].ToString();
                tmp.Nodes.Add(node);
            }
            TreeNode allNode = new TreeNode("所有");
            tmp.Nodes.Add(allNode);
            this.cbbClientType.Items.Add("所有");
            this.cbbClientType.SelectedItem = "所有";我这样写不对么?怎么它说我的ValueMember为空啊?那应该怎么设置ValueMember   我看过了 是有数据读出来的。

解决方案 »

  1.   

    我记得 ValueMember 好像是用 DataSource 时候用的 值绑定到这个哪个字段的不知道说的对不对~~ 以前用过一次。。现在又点模糊了
      

  2.   

    MSDN:获取或设置一个字符串,该字符串指定要从中取值的数据源的属性 此属性与此类无关。ValueMember是在数据源中获取一个字段(主键)作为实际在ComBoBox中存储的值。最好用数据绑定的方式吧。
      

  3.   

    看看你绑定的顺序问题 赋数据源和设置ValueMember的顺序调换一下试试
      

  4.   

    ValueMember 和Text实际上一样,都可以绑定数据源,只是绑定不同的字段;
    通常,Text绑定的是需要在界面上显示的字段;ValueMember 绑定的是一个键,方便用于执行数据库操作或者比较的操作;
      

  5.   

    this.comboBox1.DisplayMember = "字段或属性名";
    this.comboBox1.ValueMember = "字段或属性名";//Value 
    this.comboBox1.DataSource=数据源;
      

  6.   


    this.comboBox1.DataSource=ds.Tables["clientType"];
    this.comboBox1.DisplayMember = "clientTypeName".
    this.comboBox1.ValueMember = "id";//Value 而不是你那样for 来实现。