using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class userManage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//判断用户的登录类型,是读者身份还是管理员身份
if (Session["entryType"] != "reader")
{
//判断管理员是否登录
if (Session["userName"] != null)
{
bindUerManage();
}
else
{
//返回到登录页面
Response.Redirect("../entry.aspx");
}
}
else
{
Response.Write("<script>alert('您没有此权限');location='../index.aspx';</script>");
}
}
public void bindUerManage()
{
//创建SQL语句,该语句查询管理员的权限信息
string sql = "select * from tb_admSet";
//调用公共类中的getDataset方法并将该方法返回的对象绑定到GridView控件上
gvAdmSet.DataSource = dataOperate.getDataset(sql);
//设置主键字段
gvAdmSet.DataKeyNames=new string[] {"userName"};
gvAdmSet.DataBind();
}
protected void gvAdmSet_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//获取主键字段
string userName = this.gvAdmSet.DataKeys[e.RowIndex].Value.ToString();
//创建SQL语句,该语句用来删除指定的管理员
string sql = "delete from tb_admSet where userName='" + userName + "'";
//调用公共类中的execSQL方法执行SQL语句
dataOperate.execSQL(sql);
//重新绑定管理员信息
bindUerManage();
}
protected void gvAdmSet_RowDataBound(object sender, GridViewRowEventArgs e)
{
//判断是否是数据行
if (e.Row.RowType == DataControlRowType.DataRow)
{
//获取管理员名称
string userName = e.Row.Cells[0].Text;
//判断管理员名称是否和管理员登录名相同
if (userName.ToLower() == Session["userName"].ToString())
{
//设置删除按钮不可用
e.Row.Cells[7].Enabled = false;
}
//创建SQL语句,该语句查询管理员权限信息
string sqlSel = "select * from tb_admSet where userName='" + userName + "'";
//调用公共类中的getRow方法并接收返回值
SqlDataReader sdr=dataOperate.getRow(sqlSel);
//读取一条记录
sdr.Read();
//判断管理员是否拥有系统设置权限
if (dataOperate.isAdm(sdr["systemSet"].ToString()))
{
//获取系统设置复选框
CheckBox ck = (CheckBox)e.Row.FindControl("ckboxSystemSet");
//设置复选框为选中状态
ck.Checked = true;
}
//判断管理员是否拥有读者管理权限
if (dataOperate.isAdm(sdr["readerManage"].ToString()))
{
//获取读者管理复选框
CheckBox ck = (CheckBox)e.Row.FindControl("ckboxReaderManage");
//设置复选框为选中状态
ck.Checked = true;
}
//判断管理员是否拥有图书管理权限
if (dataOperate.isAdm(sdr["bookManage"].ToString()))
{
//获取图书管理复选框
CheckBox ck = (CheckBox)e.Row.FindControl("ckboxBookManage");
//设置复选框为选中状态
ck.Checked = true;
}
//判断管理员是否拥有图书借阅权限
if (dataOperate.isAdm(sdr["bookBorrow"].ToString()))
{
//获取图书借阅复选框
CheckBox ck = (CheckBox)e.Row.FindControl("ckboxBookBorrow");
//设置复选框为选中状态
ck.Checked = true;
}
//判断管理员是否拥有图书查询权限
if (dataOperate.isAdm(sdr["systemSearch"].ToString()))
{
//获取图书查询复选框
CheckBox ck = (CheckBox)e.Row.FindControl("ckboxSystemSearch");
//设置复选框为选中状态
ck.Checked = true;
}
}
}
}
上述代码说明:因为上述代码要调用核心方法
public static bool isAdm(string str)
{
//将字符串以“,”分隔填充到数组中
string[] strAdm = str.Split(',');
//遍历数组判断是否拥有“1”
foreach (string admValue in strAdm)
{
if (admValue == "1")
{
return true;
break;
}
}
return false;
}
展示的效果如下图:
这样在protected void gvAdmSet_RowDataBound(object sender, GridViewRowEventArgs e)方法中重写就实现了上面有复选框选中与没选中的效果,这就是我们在做权限时经常要用的一个代码。