为什么这段代码没效果?
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = "server=WIN-Q4FF6B0E237;database=northwind;uid=sa;pwd=123456";
conn.Open(); SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from products ";
cmd.Connection = conn; DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
comboBox1.DataSource = ds.Tables["Products"];
comboBox1.DisplayMember = "ProductID";
comboBox1.ValueMember = "ProductID";
}
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = "server=WIN-Q4FF6B0E237;database=northwind;uid=sa;pwd=123456";
conn.Open(); SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select * from products ";
cmd.Connection = conn; DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
comboBox1.DataSource = ds.Tables["Products"];
comboBox1.DisplayMember = "ProductID";
comboBox1.ValueMember = "ProductID";
}
少这一句代码
comboBox1.ValueMember = 这个是ID
你两个都绑ID了!当然没值
有值也是你的ID
comboBox1.DataSource = ds.Tables[0];
//你在Fill时,如果没有指定表名,则默认的表名为Table
da.Fill(ds);//所以你这样不行:
comboBox1.DataSource = ds.Tables["Products"];
//这样可以
comboBox1.DataSource = ds.Tables["Table"];//你要这样
comboBox1.DataSource = ds.Tables["Products"];//就必须
da.Fill(ds,Products);
//刚才的回复有点小错误,没有引号
da.Fill(ds,"Products");
comboBox1.ValueMember = 这个是ID
你两个都绑ID了!当然没值
有值也是你的ID
comboBox1.DisplayMember = "ProductID";
comboBox1.ValueMember = "ProductID";这里的问题,LS很详细了
默认不都comboBox1.DataSource = ds.Tables[0];这个么,,,
comboBox1.DataSource = ds.Tables["Products"];
这个地方有错误,
1,
da.Fill(ds,"Products");
comboBox1.DataSource = ds.Tables["Products"];
2,
da.Fill(ds);
comboBox1.DataSource = ds.Tables[0];
这两种方法都可以
然后你看一下ds里的Table,你就明白了,它不是像你那样想的以"select * from products ";这句里的表名作为表名,好像默认的是"table",不知道有没有跟一个table0,1,2...之类的数字.详细的你看一下就知道,如果SQL语句查询出来两个表,它也是以这种形式默认.