ITPUB??ì3
ITPUB论坛 » Web开发 » ASP.NET与AJAX » Dropdownlist问题请教

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: Dropdownlist问题请教
离线 duxiaochu1972
资深会员



精华贴数 0
个人空间 0
技术积分 6352 (208)
社区积分 4 (18488)
注册日期 2006-7-13
论坛徽章:14
开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星
开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星生肖徽章2007版:鼠

发表于 2008-4-28 09:01 
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(); //以上语句将用户班级帮定到下拉列表框Ddluserclass中
         
在根据用户班级查询时:  
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
按班级查询时,无论选择列表框中的哪个项,都会默认将第一项对应的内容选出来,这是怎么回事?


只看该作者    顶部
离线 juan002
中级会员



精华贴数 0
个人空间 0
技术积分 4216 (334)
社区积分 0 (1441441)
注册日期 2007-6-21
论坛徽章:19
开发板块每日发贴之星生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠
生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠

发表于 2008-4-28 09:01 
绑定的语句要放在if(!ispostback)里      
Ddluserclass  的autopostback=true;


只看该作者    顶部
离线 juanpeng
中级会员



精华贴数 0
个人空间 0
技术积分 4666 (294)
社区积分 0 (1441440)
注册日期 2007-6-21
论坛徽章:27
开发板块每日发贴之星开发板块每日发贴之星开发板块每日发贴之星生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠
生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠生肖徽章2007版:鼠

发表于 2008-4-28 09:01 
SqlDataReader sdr = cmd.ExecuteReader();   
this.Ddluserclass.DataTextField = "Userclass";   
this.Ddluserclass.DataValueField = "Userclass";   
这里的问题

this.Gvliceninfo.DataSource = ds;   
你把整个表都绑定上去了


只看该作者    顶部
离线 mosticy
中级会员


精华贴数 0
个人空间 0
技术积分 2386 (658)
社区积分 2185 (563)
注册日期 2007-10-9
论坛徽章:2
      
      

发表于 2008-4-28 09:17 
将 Ddluserclass 的绑定放在 if (!Page.IsPostBack) 中。


__________________
(止步海阔天空.)
只看该作者    顶部
离线 mosticy
中级会员


精华贴数 0
个人空间 0
技术积分 2386 (658)
社区积分 2185 (563)
注册日期 2007-10-9
论坛徽章:2
      
      

发表于 2008-4-28 09:17 


QUOTE:
原帖由 juanpeng 于 2008-4-28 09:01 发表
SqlDataReader sdr = cmd.ExecuteReader();   
this.Ddluserclass.DataTextField = "Userclass";   
this.Ddluserclass.DataValueField = "Userclass";   
这里的问题

this.Gvliceninfo.DataSource = ds;   
你把整个表都绑定上去了

这个是没有错误的,因为他的 SQL 中只有一个 select 查询,也就是 现在的dataset 只有一个 table.


__________________
(止步海阔天空.)
只看该作者    顶部
离线 smthgdin
老会员



精华贴数 0
个人空间 0
技术积分 1395 (1213)
社区积分 1 (35173)
注册日期 2004-5-13
论坛徽章:2
ITPUB元老开发板块每日发贴之星    
      

发表于 2008-4-28 10:52 
放在if (!Page.IsPostBack) 中,只是避免了每次poseback,dropdownlist绑定一次数据(每次绑定数据重复一次)。
我没使用过datareader对象来绑定数据,我一般是用dataset,虽然执行性能上datareader比dataset好,但是dataset更为灵活。
上面代码有个问题就是SqlDataReader sdr = cmd.ExecuteReader();  只是返回一个对象,并没有读取数据库内容。还有,没有看到datareader的关闭,这样reader会一直留在内存中。
最后,关于编码的问题。数据库操作的代码最好写在一个数据库访问层中,不要和页面代码合在一起,sql语句最好写成存储过程放在服务器上。


__________________
www.kooboy.net
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问