当前位置:编程学习 > C#/ASP.NET >>

下拉列表框(dropdownlist)问题(急!)

问题1
SqlConnection 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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,