如题
在同一界面上有一个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 绑定不会出现两次重复?
在同一界面上有一个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.ValueMenber还是出现两次。
我加上ds.clear() 后还是不行。
我觉得 第一次绑定的时候ds里面有记录了 然后绑定第二次的时候调用的是同一个方法 没有清除前一个方法的ds
我的Dataset是全局对象
我把DBHelperl类里面的方法 返回值都改成 当前绑定控件的对象了。
ToolStripComboBox绑定方法返回 ToolStripComboBox类型
ComboBox 绑定方法返回 ComboBox类型
绑定的时候 还是这样。。因为我想在DBHelper里面直接绑定 不想在界面Load的时候 在去创建对象加载返回值。
嗯,明白。 在DBHELPER 里面只做数据查询 在Load的时候 在绑定 各做各的事情吧。