
案例4:用户状志管理模块设计 一,任务场景: 某网站的后台管理雷设计一模块用于用户状态管理,用户状志管理是对用户的使用状态的 种维护,对于刚注册的用户,它可陵还没有办法直接使用自己的账号进行登录,此时就需要 通过川户状态管理米对该据号进行“启用”:而有些用户长期都不使用的或者违反该网站访 问原则。后台管理员又可以通透过用户状老管理进行“禁用”。 二、任务分析及实现: 本案例中网站用户的状态有“正常”和“无效两种,对于处于状态正常的用户,操作按细 文本应显示为“禁用”,反之为“启用”。实现该界而的时候,我们可以考虑在界面上放置 一个隐藏控件,该控作用于保存用户的状态D,当GiW1cw控件数据绑定后,通过判断在 控件的值重新设置操作按钮的文本,相关事件代码如下: protectedvoidGridVieUserState_DataBound (objectsender,EventArgse) for(inti=0:i<this.GridVievUserState.Rows.Count:i++) HiddenFieldhfstate=this.GridVievUserState.Rows[i].FindComtrol ("HFState)asHidde nField: LinkButtonlbstate=this.GridviesUlserState.Rows[i].FindControl ("IRState")aslinkBu tton: if(hfstate.Value=-"1) 1 bstate,Text="用”: if(hfstate.Yalue=-"2") 1 bstate,Text-"启用”:
案例 4:用户状态管理模块设计 一、任务场景: 某网站的后台管理需设计一模块用于用户状态管理。用户状态管理是对用户的使用状态的一 种维护,对于刚注册的用户,它可能还没有办法直接使用自己的账号进行登录,此时就需要 通过用户状态管理来对该账号进行“启用”;而有些用户长期都不使用的或者违反该网站访 问原则,后台管理员又可以通过用户状态管理进行“禁用”。 二、任务分析及实现: 本案例中网站用户的状态有“正常”和“无效”两种,对于处于状态正常的用户,操作按钮 文本应显示为“禁用”,反之为“启用”。实现该界面的时候,我们可以考虑在界面上放置 一个隐藏控件,该控件用于保存用户的状态 ID,当 GridView 控件数据绑定后,通过判断在 控件的值重新设置操作按钮的文本。相关事件代码如下: protectedvoidGridViewUserState_DataBound(objectsender,EventArgse) { for(inti=0;i<this.GridViewUserState.Rows.Count;i++) { HiddenFieldhfstate=this.GridViewUserState.Rows[i].FindControl("HFState")asHidde nField; LinkButtonlbstate=this.GridViewUserState.Rows[i].FindControl("LBState")asLinkBu tton; if(hfstate.Value=="1") { lbstate.Text="禁用"; } if(hfstate.Value=="2") { lbstate.Text="启用"; } } }

当单击操作按组时,将更改用户的状态为其相反状态,该功能实现时有两个有两个关键点: (1)怎样判断Giew控件引发了操作按钮事件:(2)怎样获取需要更新状态的用户Id: (1)怎样判断GridView控件引发了操作按钮事件:GridVie控件除了本来有的编铟、更 新、取消、副除等事件代列在相应的dit,pdate、.CancelDelete,事件中编写外,其他 事件的执行代码都在RosComnand事件中编写,但是要设置引发事件的操作按钮的Comand 属性。在这里,我们将LinkButton控件的Cand属性设置为“ModifyState”。 (2)怎样获取需要更新状态的用户Id山:我们可以通过1inkB如tton按钮米传递当前发生事 件的被辊所要执行的事件名称,当然也可以通过LinkBatton按钮的ComandArgunent属性 米传递当前发生事件的按钮所在用户的Id号,我们将用户Id跟L1 nkButton按钮的 CommndArgument属性进行我定,我们就可以用过CoemandArgunent属性米获得用户Id。 整个用户状老更新执行代码如下 protectedvoidGridYiewUserState_RowCommand (objectsender,GridvienCommandEventArgs e) if(e.CommandNane=="ModifyState") SqlConnectionconn=pewSqlConnection(@DataSource=.\SQLEXPRESS:At tachDbFilenane= DataDirectory \PepoleManage.ndf:IntegratedSecurity"True;UserInstance"True"): conn.Open(: stringsqlstr=selectUserStateldfronlserswhereld="+int.Parse(e.CommandArgunent.T oString()): SqlComandemd=newSqlCommand(sqlstr.conn): SglDataReaderrd=cnd.ExecuteReader () rd.Read(); intuserstateid-(int)rd['UserStateld]: rd.Close(): if(userstateid--1) sqlstr"UpdatelsersSetUserStateld-2whereld="+int.Parse(e.CommndArgunent.ToStri
当单击操作按钮时,将更改用户的状态为其相反状态,该功能实现时有两个有两个关键点: (1)怎样判断 GridView 控件引发了操作按钮事件;(2)怎样获取需要更新状态的用户 Id。 (1)怎样判断 GridView 控件引发了操作按钮事件:GridView 控件除了本来有的编辑、更 新、取消、删除等事件代码在相应的 Edit、Update、CancelDelete、事件中编写外,其他 事件的执行代码都在 RowCommand 事件中编写,但是要设置引发事件的操作按钮的 Command 属性。在这里,我们将 LinkButton 控件的 Command 属性设置为“ModifyState”。 (2)怎样获取需要更新状态的用户 Id:我们可以通过 LinkButton 按钮来传递当前发生事 件的按钮所要执行的事件名称,当然也可以通过 LinkButton 按钮的 CommandArgument 属性 来传递当前发生事件的按钮所在用户的 Id 号。我们将用户 Id 跟 LinkButton 按钮的 CommandArgument 属性进行绑定,我们就可以用过 CommandArgument 属性来获得用户 Id。 整个用户状态更新执行代码如下: protectedvoidGridViewUserState_RowCommand(objectsender,GridViewCommandEventArgs e) { if(e.CommandName=="ModifyState") { SqlConnectionconn=newSqlConnection(@"DataSource=.\SQLEXPRESS;AttachDbFilename=| DataDirectory|\PepoleManage.mdf;IntegratedSecurity=True;UserInstance=True"); conn.Open(); stringsqlstr="selectUserStateIdfromUserswhereId="+int.Parse(e.CommandArgument.T oString()); SqlCommandcmd=newSqlCommand(sqlstr,conn); SqlDataReaderrd=cmd.ExecuteReader(); rd.Read(); intuserstateid=(int)rd["UserStateId"]; rd.Close(); if(userstateid==1) { sqlstr="UpdateUsersSetUserStateId=2whereId="+int.Parse(e.CommandArgument.ToStri

ng0): cnd.CommandText=sqlstr: cnd.ExecuteNonQuery ( conn.Close0: this.GridvievUserstate.DataBindO: elseif(userstateid==2) sqlstr-UpdatelsersSetUserStateld-lwhereld-"+int.Parse(e.CommandArgunent.ToStri ng0): cnd.ComnandText"sqlstr: cad.ExecuteNonQuery(): conn.Close0: this.GridVievUserState.DataBindO:
ng()); cmd.CommandText=sqlstr; cmd.ExecuteNonQuery(); conn.Close(); this.GridViewUserState.DataBind(); } elseif(userstateid==2) { sqlstr="UpdateUsersSetUserStateId=1whereId="+int.Parse(e.CommandArgument.ToStri ng()); cmd.CommandText=sqlstr; cmd.ExecuteNonQuery(); conn.Close(); this.GridViewUserState.DataBind(); } } }