下拉列表框(dropdownlist)问题(急!)
问题1SqlConnection conn = db.createcon();
conn.Open();
string sql = "select * from Userinfo";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader sdr = cmd.ExecuteReader();
this.Ddluserclass.DataSource=sdr;
this.Ddluserclass.DataTextField = "Userclass";
this.Ddluserclass.DataValueField = "Userclass";
this.Ddluserclass.DataBind();
conn.Close();
用户信息表(userinfo)中的字段用户班级(userclass)有重复的,因为不同用户可以在一个班里,在帮定到下拉列表框(Ddluserclass)时
为了设置不让它显示重复的班级,应该如何写代码?
问题2
另外,在根据用户班级查询时:
string userclass = this.Ddluserclass.SelectedValue;/本句是否有错(列表框值不是手动输入而是动态帮定的)
SqlConnection conn = db.createcon();
conn.Open();
string licenfind = "select * from userinfo where userclass='" + userclass + "'";
SqlDataAdapter sda = new SqlDataAdapter(licenfind, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
this.Gvliceninfo.DataSource = ds;
this.Gvliceninfo.DataBind();
conn.Close();
为什么的不到预期结果?
--------------------编程问答-------------------- 问题1参考:
将“string sql = "select * from Userinfo"; 改为string sql = "select distinct userclass from Userinfo";
问题2参考:
通过设置断点,进行单步调试找找看吧。
最后建议楼主好好学习SQL基础。祝楼主早日解决问题!
--------------------编程问答-------------------- 问题1代码可这样写更合理:
SqlConnection conn = db.createcon();
string sql = "select distinct userclass from Userinfo";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();//慢点打开
SqlDataReader sdr = cmd.ExecuteReader(CommandBehavier.CloseConnection);
this.Ddluserclass.DataSource=sdr;
//因为只有一个字段,所以那两句也省了
this.Ddluserclass.DataBind();
//close语句不需要了,因为在DataBind语句里面如果数据源是阅读器,读完会自动关闭阅读器,而阅读器又会自动关闭连接
问题2 建议不要用字符串连接的方式来组合Sql语句,可以使用@参数,(安全原因,虽然DropDownList是不能输入的,但同样可以进行注入攻击)
另外代码没错,得不到预期结果应该是其他原因,建议设给断点一步一步看看
--------------------编程问答--------------------
SqlConnection conn = db.createcon();
conn.Open();
string sql = "select distinct userclass from Userinfo";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader sdr = cmd.ExecuteReader();
this.Ddluserclass.DataSource=sdr;
this.Ddluserclass.DataTextField = "Userclass";
this.Ddluserclass.DataValueField = "Userclass";
this.Ddluserclass.DataBind();
conn.Close();
在根据用户班级查询时:
string userclass = this.Ddluserclass.SelectedValue;/本句是否有错(列表框值不是手动输入而是动态帮定的)
SqlConnection conn = db.createcon();
conn.Open();
string licenfind = "select * from userinfo where userclass='" + userclass + "'";
SqlDataAdapter sda = new SqlDataAdapter(licenfind, conn);
DataSet ds = new DataSet();
sda.Fill(ds);
this.Gvliceninfo.DataSource = ds;
this.Gvliceninfo.DataBind();
conn.Close();
问题2
按班级查询时,无论选择列表框中的哪个项,都会默认将第一项对应的内容选出来,这是怎么回事? --------------------编程问答-------------------- 路过 路过…… --------------------编程问答-------------------- distinct --------------------编程问答-------------------- 都是很好的建议! 值得学习 --------------------编程问答-------------------- 什么呀
补充:.NET技术 , ASP.NET