学生晚归与考勤管理信息系统的开发_第1页
学生晚归与考勤管理信息系统的开发_第2页
学生晚归与考勤管理信息系统的开发_第3页
学生晚归与考勤管理信息系统的开发_第4页
学生晚归与考勤管理信息系统的开发_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学生晚归与考勤管理信息系统开发系统分析及设计3.1 系统预期用户本系统的预期用户是任何想了解学生在校的考勤情况的用户。3.2 功能说明学生晚归与考勤管理系统是目前广西机电职业技术校园网在线系统之一。本软件将各个学院各个部门联系到一起,便于学生晚归、考勤的管理,同时,还可以让学生通过查询自己的晚归与考勤记录,了解到自己的纪律情况。在线图书销售系统要实现的功能模块主要有:该系统分为晚归情况管理、考勤情况管理与后台管理三大功能模块。系统功能模块的划分学生晚归与考勤管理系统图1系统功能架构图(2)基本处理流程F图是系统基本处理流程图。管理员输入账号与密码V进入系统按身份选择登录系统1F登记员输入账号与

2、密码进入系统学生输入账号与密码1T进入系统V单击需要更新的模块r进入更新子系统11退出系统或继续更新单击所需要登记的模块1输入所需的信息退出系统或继续登记图2系统基本处理流程单击所需要查询的模块f输入所需的信息1f退出系统或继续查询3.3 数据库设计本系统采用SQLServer2005作为后台数据库。根据以上功能,新建一名为Attendance的数据库,其中共包括9个数据表,分别是部门表(department)专业信息表(special):表dbo.special列名数据类型允许空dept_kfintspc_name?archar(5d-)班级信息表(class):衰dbo_elass列名数据

3、类型允许空卜窿classJdintapc_idintelasB_narwvardiflr(5O)n0学生信息表(stuInfo):区/门信息表(region ):表-dbo_ r e g 1 on列名府明|口口_nki )数据类型 ini允许空regiDnnannevarchar(&jz丧dbo:.stuln,d列名数据类学允许至idintstu_namedhar®o:?stu_cctiari1lyIIdept_idintn即jidint。旧5s_kJintBrftofnehar(Sa晚归情况表(late) Bonn表一曲口,late列名数据类型用:late_Ki噬intst

4、i_idcJiar(11)reQiDr_idtntlatejtime-datEtimelate_intfotexi考勤情况表(attendance):表-dbo.列名数据类型mi1aliimivii用3ttsnd_idginiIn-imu1rsrirvtrailmail»stupidciiar(U)intHttend_bnredatetimesttend_ntrotxtcountsint考勤类型表(attendtype):表dbo_a+'t*zid'type列名数据类生隔:lyf)s_idinttype_na(nectiar4)用户信息表(admin):爰dbo_到考

5、_、馥据类型,曾!a4mh_idjiniIsI.11;r,-LF,L.irtr-WTI,!I,*'tagin_rgrnvardarbDSinjw<lvarehsr(20)a(tniin_powerint各个数据表的关系(主要是主键与外键的约束关系)如下图所示:specialdepartmentdept_<iadminacmrstu Infoattendtypetype_namenamedepi_idatt&n-droom各个表通过主犍与外键之间的attendcounts约束关系建立起联接美系region证了各个表中数据的完整性/>System.Configur

6、ationusingSystem.Collections;usingSystem.WebusingSystem.Web.SecurityusingSystem.Web.UI;usingusing usingusing usingattendd&pt_nameSystem;System.Data;System.Web.UI.WebControls;System.Web.UI.WebControls.WebParts;数据库创建脚本参考文件步.sql ”3.4数据库连接log in _ name login_pwd admin_p!0W2rspc_n0nw1、建议将数据库拷入网站内的 Ap

7、p_Data目录内,然后将数据库连接字符串 写入至“Web.config , 参考代码如下:<appSettings ><add key ="' ConnectionStr " value =" Server=.;AttachDb Security=True</appSettings >region¥ sgiorjdregiGr_RBr-£usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;publicpartialclassDBConnTe

8、st:System.Web.UI.PageprotectedvoidPage_Load(objectsender,EventArgse)stringconstr=ConfigurationManager.AppSettings"ConnectionStr"SqlConnectionconn=newSqlConnection(constr);conn.Open();/打开数据库连接Response.Write("数据库连接成功!");conn.Close();/关闭数据库连接Response.Write("数据库关1成功!");经验证,

9、Attendance.mdf数据库连接正常2、将常用数据库操作代码写入公共类DB中,其中包含以下各自定义方法,参考代码如下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.Sql

10、Client;/<summary>/DB类为一个专门进行数据库操作的类/包括连接数据库,更新数据库,查询数据库这些操作/summarypublicclassDB(/<summary>/DB()为D谈的构造方法/</summary>publicDB()()/summary/定义返回数据库连接对象SqlConnection方法/summary/returns/SqlConnection对象/returnspublicSqlConnectiongetCon()StringstrCon=ConfigurationManager.AppSettings"Co

11、nnectionStr"/从配置文件web.cofig里面读取数据库的连接字符串returnnewSqlConnection(strCon);/返回数据库连接对象/summary/定义更新数据库的方法/summary/<paramname="cmdStr"/参数cmdStr为要执行更新数据库的SQL吾句,包含增加,修改,删除这三种SQL吾句/param/<returns>/数据库更新成功则返回1,更新失败则返回0/</returns>publicintsqlEx(stringcmdStr)SqlConnectioncon=getCon

12、();con.Open();/打开数据库连接SqlCommandcmd=newSqlCommanc(cmdStr,con);/创建执行SQ1LI句的命令对象SqlCommandtrycmd.ExecuteNonQuery();return1;/成功返回1catchreturn0;/失败返回0finallycon.Dispose();/释放资源/summary/定义查询数据库信息的方法/summary/<paramname="cmdStr">/参数cmdStr为执行查询时的书写的SQ暗句/</param>/<returns></ret

13、urns>publicDataTablereDt(stringcmdStr)SqlConnectioncon=getCon();/连接数据库con.Open();SqlDataAdapterda=newSqlDataAdapter(cmdStr,con);/创建数据适配器对象DataSetds=newDataSet();/创建数据集对象da.Fill(ds);/将保存在数据适配器对象中的数据填充到数据集对象中return(ds.Tables0);/返回数据集对象中有记录的那个表/summary/定义阅读数据的方法/summary/paramname="str">

14、/参数str为执行查询操作时的SQLI句/param/returns/返回一个数据阅读对象/returnspublicSqlDataReaderreDr(stringstr)SqlConnectioncon=getCon();con.Open();SqlCommandcmd=newSqlCommanc(str,con);SqlDataReaderdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);/通过调用Command象的ExecuteReader()方法创建DataReader对象,CommandBehavior.CloseConne

15、ction表示?returndr;功能模块的实现用户注册功能的实现:实现逻辑:用户注册信息写入到admin表,此注册功能是专门针对本校的学生开发注册的,如果不是本校的学生,是没有注册的权限的,所有注册时要根据学生输入的真实姓名和学号进行注册,如果找不到对应的学生的名字,就不允许用户进行注册,如果用户已经注册过一次了,就直接告诉用户已经注册过了,无需再次注册了,并自动为用户跳转到登录页面,如果用户是第一次注册,就把用户的注册信息写入到admin表中,注册成功后也跳转到登录页面让用户进行登录。用户注册页面Register.aspx如下图所示:广孙机电职业技术号年GUAWGM7ECJ-WOL-OGI

16、DMCOLLEGEOFW二H'ERrAMDELEZTRCITf.学生晚归与考勤管理系统>>"cl-=1d04k-学生姓名|学生姓名将作为系筑登录时的用户名,髭多为4个衩字.|学生学号岫学号是用于叠录一统时仅为密码用的点须填写正6ZL9|6提交|j承直学生进入此页面进行注册,正确填写了学生姓名和学生学号以及验证码了以后,点击提交按钮完成帐户注册,而在后台,要进行数据的合法性判断,首先进行的是验证码的正确性判断,把用户输入的验证码和保存的Session对象中的验证码取出来作比较,如果验证码输入正确才继续执行检查该注册用户是否是本校的学生,以及该用户是否已经被注册了,后

17、台的处理代码如下所示:Register.aspx.csusingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;publ

18、icpartialclassstudent_Register:System.Web.UI.PageDBdb=newDB();protectedvoidPage_Load(objectsender,EventArgse)this.ImageButton1.ImageUrl="image.aspx"/image.aspx是个显示验证码的WelM面protectedvoidbtn_submit_Click(objectsender,EventArgse)stringcode=txtCheckCode.Text.Trim();if(code!=(string)Session&quo

19、t;image")Response.Write("<Script>alert('验证码输入错误,请检查后重新输入!)</Script>");javascript/Response.Redirect("Register.aspx");如果使用这种跳转方式,那么上面的是无法运行的,因为还没有来得及运行就页面就已经跳转了Response.Write("<script>window.location.href='Register.aspx'</script>")

20、;else stringstu_Name = txtUserName.Text.Trim();stringstu_Id = txtstuID.Text.Trim();stringsql2 = "select stu_name from stuInfo where stu_name='"+stu_Name4:"" ; / 使用这条SQ晤句检查要注册的人是否是本校的学生,如果是,才允许其注册,如果不是,就不允许其注册SqlDataReader dr = db.reDr(sql2);if (dr.Read()dr.Close();/ 关闭 SqlDat

21、aReaderstring sq = "select * from admin where login_name='"已经证实是本校的学生,就再判断该学生是否已经注册过了+ stu_Name + ,"" ; / 如果dr=db.reDr(sq);/ 再次使用 SqlDataReaderif (dr.Read()Response.Write(跳转到登录页面进行登录)</Script>""<Script>alert('你已经注册过了,不需要再次注册了!直接为您);Response.Write(&qu

22、ot;<script>window.location.href='logion.aspx'</script>");elseint power = 3;/如果已经证实要注册的人是本校的学生,就直接给该学生赋予使用权限stringsql="insertintoadmin(login_name,login_pwd,admin_power)values。"+ stuName +HI III+ stuId +"',"+power+")"/Response.Write(sql);/Resp

23、onse.End();tryintflag=db.sqlEx(sql);if(flag>0)Response.Write( 进行登录')</Script>");"<Script>alert('注册成功了!马上为您跳转到登录页面Response.Write( "<script>window.location.href='login.aspx'</script>");else Response.Write("<Script>alert('注册失

24、败!)</Script>");catch (System. Exception ee) Response.Write( "<script>alert('"+ee.Message.ToString()+ "');</script>");else Response.Write("<Script>alert('你不是本校的学生,没有注册的权限!')</Script>");txtUserName.Text =,;;,;;txtstuID.Te

25、xt =,;;txtUserName.Text =,;;txtstuID.Text=protectedvoidbtn_reset_Click(objectsender,EventArgse)用户登录功能的实现实现逻辑:用户进入登录页面后,输入相关的用户名和密码进行登录,如果用户名和密码都正确了,表示该用户是合法用户,就允许其进入系统的主页进行相关的系统操作,如果用户名和密码的验证不通过,就不允许其进入系统,用户输入用户名和密码后,在后台的处理过程中首先会从数据库Attendance.mdf的admin表取出相应的用户名和用户输入的用户名进行匹配,如果用户名匹配成功了,就把数据表中存储的密码和用

26、户输入的密码进行比对,如果密码也验证通过了,才允许用户进入系统首页,用户名和密码中任意一项匹配如果不通过,都不允许其登录。登录该系统时,有三种不同身份的使用者,分别为管理员,记录员和学生,不同的身份就对应着不同的使用权限。使用权限的限制根据不同身份的登录者生成不同的动态导航,以此到达限定使用者的权限的目的。登录页面的设计如下:如果登录的身份是管理员,则显示如下的导航:G广信机电职业技木学院Gun*&*JT£CbTSOiJ>.jiC-X«_L=GEQFma:-I、ERtASDELE:TRJCrr学生晚归与考勒管理系统晚正音间ftflQJ噩里法山匕勒丁兑I於班级兆

27、里护I区1维护I用户管油I用省庠户工匚匹;1|门I将后欢迎使用晚归考勒管理信息系统如果登录的身份是记录员,则显示如下的导航:G广海机电取业技术号第GUMbJtJiUHULLLJbJbrJViCHHzHA>DRtlIf.善生晚归与考勤管理系统-«w*i-"9*-MTB*f.dfeMb»晚E-涧I晚归匚岂I闫誓记|苦荀古囿1汇县I泊桂拾甲士欢迎库8E白”朋录欢迎使用晚归考勤管理信息系统如果登录的身份是学生,则显示如下的导航:广命机电职业技末学悦6UrtC4fiFUukNGX)lECl-rJCiL&GlCALCOLLCQEOFMACtl*JEffVAWCL

28、ECTRierrV学生晚归与考勤管理系统*-Ur,.卡fc.r.-旧古间如乐I5|黑勒古阿耳骄而而鞘用户欢迎迷做苍躯矍录欢迎使用晚归考勤管理信息系统对于管理员而言,其拥有的使用权限是最多的,但没有晚归登记和考勤登记的权限,登记权限只有记录员才有,而对于学生而言,只有查看相关记录的权限,别的权限都没有,因此通过这种根据不同登录者的身份生成不同的导航就可以限定了登录者的使用权限了。这里难就难在了如果根据登录者的身份动态生成不同的导航信息。相关代码如下:用户登录的后台代码:login.aspx.csusingSystem;usingSystem.Data;usingSystem.Configurat

29、ion;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;publicpartialclasslogin:System.Web.UI.PageDBdb=newDB();protectedvoidPage_Load(obje

30、ctsender,EventArgse)ImageButton1.ImageUrl="image.aspx"让页面加载时就显示验证码图片protectedvoidbtnRegister_Click(objectsender,EventArgse)Response.Redirect("Register.aspx");/点击注册按钮后,直接跳转到注册页面,这里需要注意一个小问题,由于文本框已经使用了验证控件,因此要想让按钮的触发事件不触发验证控件时,把按钮的CausesValidation属性设置为false即可protectedvoidbtnLogin_C

31、lick(objectsender,EventArgse)stringcode=txtCheckCode.Text.Trim();获取输入的验证码stringusername=txtUserName.Text.Trim();/获取输入的用户名stringpassword=txtPassword.Text.Trim();获取输入的密码if(code!=(string)Session"image")先进行验证码的判断,验证码输入正确后在执行其他的操作Response.Write("<script>alert('验证码输入有误!')</

32、script>");Response.Write("<script>window.location.href='login.aspx'</script>");elsestringsql="selectlogin_name,login_pwd,admin_powerfromadminwherelogin_name="'+username+""';SqlDataReaderdr=db.reDr(sql);if(dr.Read()if(string)dr"lo

33、gin_pwd"=password)Response.Write("<script>alert('用户名和密码正确!登录成功!')</script>"););Response.Write("<script>window.location.href='Index.aspx'</script>"SessionSession"Power"=dr"admin_power"/使用Session存储用户的使用权限"usernam

34、e"=username;/存储用户名elseResponse.Write("<script>alert('密码错误!')</script>" );Response.Write( "<script>window.location.href='login.aspx'</script>");else Response.Write(录操作,即将为你跳转到注册页面!"<script>alert('该用户不存在,请先去注册一个帐户后再进行登'

35、;)</script>" );Response.Write("<script>window.location.href='Register.aspx'</script>");在用户进行登录的时候,使用Session对象存储用户名,并且根据用户名从数据库中取出该用户的使用权限,也使用Session对象保存用户的使用权限,登录成功后,在系统的主页的后台处理代码中取出保存在Session对象中的用户名的相关的用户权限,然后根据用户权限来动态生成导航,相关的代码如下:系统主页的后台处理代码:index.aspx.csus

36、ingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.Ul.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;publicpartialclassIndex:System.Web.UI.PageprotectedvoidPage_

37、Load(objectsender,EventArgse)if(Session"username"!=null)这里使用Session对象对用户是否已经进行登录进行判断,如果Session中的内容不为空,则表示用户已经登录stringuserStr=(string)Session"username"取出保存在Session对象中的用户名intpower=int.Parse(Session"Power".ToString();/取出保存在Session对象中的用户使用权限标识stringnav=""if(power=

38、1)根据登录者的身份动态变化导航的显示,以此限定不同身份的登录者的使用权限nav="<td><ahref='latecheck.aspx'target='show_Content'>nav+="<td><ahref='latecount.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='attendcheck.aspx'tar

39、get='show_Content'></a>|</td>"nav+="<td><ahref='attendcount.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='updatedept.aspx'target='show_Content'></a>|</td>"nav+=&q

40、uot;<td><ahref='updateregion.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='updateadmin.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='exit.aspx'>注销用户</a>&l

41、t;/td>"elseif(power=2)nav="<td><ahref='latecheck.aspx'target='show_Content'>nav+="<td><ahref='latecount.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='latewrite.aspx'target='

42、show_Content'></a>|</td>"nav+="<td><ahref='attendcheck.aspx'target='show_Content'></a>|</td>"nav+="<td><ahref='attendcount.aspx'target='show_Content'>晚归查询</a>|</td>"晚归汇总考勤查询考勤汇

43、总系/班级/专业维护区/门维护用户管理晚归查询</a>|</td>"晚归汇总晚归登记考勤查询考勤汇总</a>|</td>"nav+="<td><ahref='attendwrite.aspx'target='show_Content'>考勤登记</a>|</td>"nav+="<td><ahref='exit.aspx'>注销用户</a></td>&quo

44、t;)elseif(power=3)nav="<td><ahref='latecheck.aspx'target='show_Content'>晚归查询</a>|</td>"nav+="<td><ahref='latecount.aspx'target='show_Content'>晚归汇总</a>|</td>"nav+="<td><ahref='attendc

45、heck.aspx'target='show_Content'>考勤查询</a>|</td>"nav+="<td><ahref='attendcount.aspx'target='show_Content'>考勤汇总</a>|</td>"nav+=)"<td><ahref='exit.aspx'>注销用户</a></td>"IblNav.Text =

46、IblNav.Text +="<table><tr>"+nav+”</tr></table>""欢迎<fontcolor='red'>"+userStr+"</font>登录")else/如果用户没有进行登录,则直接跳转到登录页面Response.Write("<script>alert('你还没有进行系统的登录,请先登录后再使用本系统!')</script>");Respons

47、e.Write("<script>window.location.href='login.aspx'</script>");)/Response.Write("<iframename='show_Content'frameborder='1'width='800px'height='600px'scroll='no'></iframe>");向网页中输出一个框架lblContent.Text="<

48、iframename='show_Content'frameborder='1'width='800px'height='600px'scroll='no'src='Welcome.aspx'></iframe>"/让框架在指定的Lable中显示)到此,用户注册和登录的功能模块就全部实现了接下来将进入系统开发中的最核心的功能模块部分的开发:晚归情况管理和考勤情况管理,这两个部分是系统功能中最核心的两个部分,也是最难实现的两个部分,这两个部分难就难在了查询的部分,如何根据用

49、户的选择查询操作动态拼凑出SQL语句对数据库进行操作,从而查询出用户想要的记录。晚归情况管理功能模块的实现晚归情况管理功能模块主要有三部分,分别为晚归登记,晚归查询,晚归汇总。如下图所示:晚归情况管理晚归汇总晚归查询晚归登记实现晚归登记功能latewrite.aspx页面设计如下:在数据库的设计中,存储晚归情况的表为late表,late表的设计如下图所示:亮归情况记学从表中可以看到,late表存储的信息为学生的学号(stu_id)、区/门编号(region_id)以及晚归时间(late_time)和晚归事由(late_intro)。记录员在进行晚归情加记录时,首先要选择的秦部,专业,班级,区7

50、门,姓名这些相关的学生的信息,然后写上晚归时间和晚归事由后,点击【记录】按钮,完成晚归情况的登记。这里需要注意的地方是,记录员选择的系部名称,专业名称,班级名称以及学生名称这些信息是早就已经随着数据库的创建插入到相关的表中存放了,因此没有必要再次把这些重复的信息写入到数据库中,而且从存储晚归情况记录的late表中也可以看出,late表并没有定义有可以存储系部,专业,班级、区/门和姓名的字段,但可以看到,late表中存放有学生的学号(stu_id),区门的编号(region_id),当初进行数据库设计时,就已经定义了late表中的stu_id(外键)字段和stuInfo表的stu_id(主键)字

51、段之间的约束关系,因此可以通过late表的stu_id找到stuInfo表中对应着的stu_id所表示的学生,而stuInfo表的设计如十曲所示:一从学生信息表(stuInfo)的定义中可以看出,学生信息表中存放有系部的编号(dept_id)、专业编号(spc_id)以及(class_id),这三个字段都作为外键与相应的department表的dept_id(主键)、spcieal表的spc_id(主键)以及class表的class_id(主键)建立起主键外键的约束关系,因此通过stuInfo表就可以找到与该血3学生相关的系部,专业以及所在的班级,这样有关该晚归学生的全部信息就可以通过多表联合

52、查询从stuInfo表(得到学生姓名),class表(得到班级),spceial表(得到专业)和department表(得到系部)得到。这就是建立起主键外键约束的好处,可以把表和表通过某种关系关联起来,使之成为有一定依赖关系的表,从而保持了数据的完整性。晚归情况记录表(late)中的region_id记录了学生晚归的区/门编号,通过该编号就可以找到存放在region表中对应的区/门信息。做这个功能模块时,容易产生一个误区,会很自然地认为记录员选择的系部,专业,班级,姓名,区/门以及填写的晚归时间和晚归事由这些有关晚归的信息全部都要写入到数据库里面,如果这样想,那么这个功能模块就没有办法做了,而

53、且会越做越复杂,会产生很多重复的数据,可能有的人会想到再创建一个表,专门用来存放这些信息,其实是完全没有必要这样做的。使用一个late表存放晚归情况记录即已经可以了。其它的系部,班级,专业等相关信息在别的表已经存放有了,因此没有必要再次把这些信息写入到数据库中存放,造成数据的冗余以及存储空间的浪费。latewrite.aspx.cs相关的代码如下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;using

54、System.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;publicpartialclasslatewrite:System.Web.UI.PageDBdb=newDB();protectedvoidPage_Load(objectsender,EventArgse)if(!IsPostBack)stringsql="selectdept_id,dept_

55、namefromdepartment"SqlDataReaderdr=db.reDr(sql);/获取数据源,数据源来源于department表dp_dept.DataSource=dr;dp_dept.DataValueField=dp_dept.DataTextField=dp_dept.DataBind();dp_dept.Items.Insert(0,/绑定数据源到dp_selectDept中"dept_id"给DropDownList1的下拉列表的项赋值"dept_name"/显示给用户看的文本/显示数据newListItem(&qu

56、ot;=请选择系部=","");在第0个位置插入一个下拉项,显示的DataTextField为"=请选择系部=",下拉项的DataValueField为空dp_spc.Items.Insert(0,dp_class.Items.Insert(0,dp_name.Items.Insert(0,newListItem("=请选择专业=","");newListItem("=请选择班级=","");newListItem("=请选择姓名=");sql=

57、"selectregion_id,region_namefromregiondr=db.reDr(sql);dp_region.DataSource=dr;dp_region.DataValueField=dp_region.DataTextField=dp_region.DataBind();dp_region.Items.Insert(0,"region_id""region_name"newListItem("=请选择区/门=","");protectedvoiddp_dept_SelectedIn

58、dexChanged(objectsender,EventArgse)stringdept_id=dp_dept.SelectedValue;明显,意思为选中的值/获取中选定的项的value,SelectedValue的意思很/注意:这里的判断不要写成if(dept_id!=null)这样写会出错的if(dept_id!="")/这里要进行判断,如果选中的是第一项,即显示文本为"=请选择系部="这一项时,dept_id是没有值的,即为空stringsql="selectspc_id,spc_namefromspecialwheredept_id

59、="+dept_id;/查询出与dept_id相等的记录,这里的dept_id为整型,所以不用加单引号引起来SqlDataReaderdr=db.reDr(sql);/获取数据源,数据源来源于special表dp_spc.DataSource=dr;dp_spc.DataTextField=dp_spc.DataValueField=dp_spc.DataBind();dp_spc.Items.Insert(0,/绑定数据源"spc_name"/显示专业名称给用户看"spc_id"/把专业的id值赋值给下拉列表的项/显示数据newListIte

60、m("=请选择专业=","");else是为空的,所以要/如果dp_dept选中的是第一项"=请选择系部=",此时的DataValueField中的项清空掉相应的把dp_spc,dp_class,dp_namedp_spc.Items.Clear();dp_spc.Items.Insert(0,dp_class.items.Clear();dp_class.items.insert(0,/清空DropDownList2下拉列表的项 new Listitem ("=请选择专业 =",/清空DropDownList3下

61、拉列表的项"");new Listitem ("=请选择班级 =","");dp_name.Items.Clear();/清空下拉列表的项dp_name.Items.Insert(0,new Listitem ("=请选择姓名=","");protected void dp_spc_SelectedIndexChanged( object sender, EventArgs e)string spc_id = dp_spc.SelectedValue; if (spc_id !="")string sql = "select class_id,class_name from class where spc_id

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论