如题
在同一界面上有一个ToolStripComboBox 和一个 ComboBox DBHelper里面绑定ToolStripComboBox用的方法代码/// <summary>
        /// 绑定ToolStripComboBox 的操作
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="tableName">表名</param>
        /// <param name="tableName">表名</param>
        /// <param name="field">字段名</param>
        /// <returns></returns>
        public static DataSet ToolcobBinding(string sql, ToolStripComboBox toolcob,string tableName, string field)
        {
            try
            {
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
                da = new SqlDataAdapter(sql, conn);
                da.Fill(ds,tableName);
                toolcob.ComboBox.DataSource = ds.Tables[tableName].DefaultView;
                toolcob.ComboBox.DisplayMember = field;
                return ds;
            }
            catch
            {
                return null;
            }
            finally
            {
                conn.Close();
            }
        }DBHelper绑定ComboBox用的方法代码/// <summary>
        /// 绑定ComboBox 的操作
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="tableName">表名</param>
        /// <param name="tableName">表名</param>
        /// <param name="field">字段名</param>
        /// <returns></returns>
        public static DataSet cobBinding(string sql, ComboBox cob, string tableName, string field)
        {
            try
            {
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }
                da = new SqlDataAdapter(sql, conn);
                da.Fill(ds, tableName);
                cob.DataSource = ds.Tables[tableName].DefaultView;
                cob.DisplayMember = field;
                return ds;
            }
            catch
            {
                return null;
            }
            finally
            {
                conn.Close();
            }
        }
界面 Form_Load代码string sql = "select username from userinfo";
DBHelper.ToolcobBinding(sql, toolStripComboBox2,"UserInfo","UserName");
DBHelper.cobBinding(sql, comboBox1, "UserInfo", "UserName");
运行后窗体后ToolStripComboBox出现的效果 
如下图:运行后窗体后ComboBox出现的效果 
如下图:
通过图片对比发现ToolStripComboBox和ComboBox绑定的值都出现了两遍。 不知到这是否和ToolStripComboBox绑定时 toolcob.ComboBox.DataSource 有关系。怎样才能解决 在同一界面上ToolStripComboBox和ComboBox 绑定不会出现两次重复?

解决方案 »

  1.   

    你加上 ComboBox.ValueMember 试试
      

  2.   


    回复1楼
    加上ComboBox.ValueMenber还是出现两次。
      

  3.   

    你这个DBhelper类的方法逻辑就有问题。既然两个方法都是返回DataSet,就不该在里面写绑定事件。
      

  4.   

    我想通过加ds.clear来解决 都返回dataset 出现的问题 
    我加上ds.clear() 后还是不行。
    我觉得 第一次绑定的时候ds里面有记录了 然后绑定第二次的时候调用的是同一个方法 没有清除前一个方法的ds
    我的Dataset是全局对象
      

  5.   

    请教一下3楼
    我把DBHelperl类里面的方法 返回值都改成 当前绑定控件的对象了。
    ToolStripComboBox绑定方法返回 ToolStripComboBox类型
    ComboBox 绑定方法返回 ComboBox类型
    绑定的时候 还是这样。。因为我想在DBHelper里面直接绑定 不想在界面Load的时候 在去创建对象加载返回值。
      

  6.   

    数据库查询与赋值分开,这个是两个概念的动作,最好不要放在一起查询数据的时候时候clear?combox.ValueMember?
      

  7.   


    嗯,明白。 在DBHELPER 里面只做数据查询  在Load的时候 在绑定  各做各的事情吧。