我想在combobox1中存储一次Table的列数据?以下是无效的代码:
SqlCommand cmdRe = new SqlCommand("select FK_RoleID from SO_User_Table", cn);
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
try
{
cn.Open();
da.SelectCommand = cmdRe;
da.Fill(dt);
// textBox1.Text = dt.Rows[0].ItemArray[0].ToString();
this.comboBox1.DisplayMember= "FK_RoleID";
this.comboBox1.ValueMember = "FK_RoleID";
this.comboBox1.DataSource = da;
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
}
答案 0 :(得分:4)
您需要绑定到表,而不是适配器:
this.comboBox1.DataSource = dt;
此外 - 如果您使用using
,您可以稍微简化代码(您不需要finally
等):
using(SqlCommand cmdRe = {blah}) {
// {blah}
}
最后一点 - 随着.NET开发的进展,您可能需要考虑分离UI和数据逻辑。以相同的方法(甚至是dll)与db命令和ui-control交谈通常是代码嗅觉。
答案 1 :(得分:1)
您必须设置组合框的DataValueField和DataTextField属性。检查以下修改。
void textbox_value_load()
{
SqlCommand cmdRe = new SqlCommand("select FK_RoleID from SO_User_Table", cn);
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
try
{
cn.Open();
da.SelectCommand = cmdRe;
da.Fill(dt);
this.comboBox1.DataSource = da;
this.comboBox1.DataValueField = ""; //Name of the Id column
this.comboBox1.DataTextField = ""; //Name of the value/name column
this.comboBox1.DataBind();
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cn.Close();
}
}
答案 2 :(得分:0)
在comboBox1控件上调用DataBind()
:
this.comboBox1.DataSource = da;
this.comboBox1.DataBind();
答案 3 :(得分:0)
很快,你应该使用dt作为数据源,而不是dataadapter。其次,如果您使用的是dataadapter和C#2.0或3.0,则不需要sqlcommand对象,将select语句放在dataadapter的构造函数中(MSDN链接 - http://msdn.microsoft.com/en-us/library/bh8kx08z.aspx)。希望有所帮助。
瓦德