1:界面功能按钮权限控制
下面是按钮权限控制枚举类型的定义:
public enum RightChar { Add = 0, Del = 1, Mod = 2, Ser = 3, In = 4, Out = 5,Print = 6, Check = 7, CancelCheck = 8, Approve = 9, CancelApprove = 10, Fei =11, CancelFei = 12, Set = 13 };
1.1:第一种方式
protected voidbtnEmSearch_Click(object sender, EventArgs e)
{
CheckRight checkRight=new CheckRight();
if(!checkRight .Check( “Search”)) //不用传递account 和 URL地址,几个关键字在方法定义中可以查到
{
JSUtility.Alert(this, "您没有查询权限!?");
return;
}
……
}
1.1:第二种方式
protected voidbtnEmSearch_Click(object sender, EventArgs e)
{
CheckRight checkRight=new CheckRight();
if (!checkRight . CheckUrl (RightChar.Ser))//使用枚举值
{
JSUtility.Alert(this, "您没有查询权限!?");
return;
}
……
}
1.3: 第三种使用方法
protected voidbtnEmSearch_Click(object sender, EventArgs e)
{
if(!AccountBiz.CheckRight(account, "EmpDutyNotice.aspx", RightChar.Ser))
{
JSUtility.Alert(this, "您没有查询权限");
return;
}
……
}
原理:checkRight .Check 调用 checkRight . CheckUrl 调用 AccountBiz.CheckRight ,适用不同的个人爱好
1.4:第四种使用方法:在 Page_Load方法中设定按钮状态
protected void Page_Load(object sender, EventArgse)
{
If(!IspostBack)
{
CheckRight checkRight=new CheckRight();
if (!checkRight . CheckUrl(RightChar.Ser)) btnSer.Enable=fale;
…….
}
}
1.5:第五种方法:在业务逻辑层(BLL)使用
实例化 CheckRight,调用相关方法
2:数据范围控制
下面是数据范围枚举类型的定义
public enum RangeChar { Normal= 1, Dept = 2, Com = 3, Corp = 4, Super = 5, Limit = 6, Guest = 7 }
比如下面方法,返回一个查询条件,限制显示和操作的数据:
public string FilterDept(stringcomID, string deptID, stringaccount, string url)
{
stringfilter = "";
if(AccountDao.IsSuperGroup(account)) return filter;
stringdeptCode = GetDeptCodeByID(deptID); //获?取¨?部?门?编À¨¤码?
intrangeChar = (int)AccountDao.GetRange(account,"~" + url);//获取设置菜单的权限数据范围
switch(rangeChar)
{
case1://自Á?己o的Ì?
case6://限T制?
filter = " and Account='" + account + "'";
break;
case 2://显?示º?部?门?
filter = " and DeptCode like '" + deptCode + "%'";
break;
case3://公?司?的Ì?
filter = " and DeptCode like '" + deptCode.Substring(0, 2) + "%'";
break;
case4://集¡¥团ª?的Ì?
case5://超?级?用®?户¡ì
break;
case7:
filter = " and 1=2";
break;
default:
filter = " and Account='" + account + "'";
break;
}
returnfilter;
}
把这个查询条件 连接到select的where就可以实现数据范围的控制了