还是我上次提出的那个问题
问题:
假设一个订单表,
1.角色A可以看自己的
2.角色B可以看工作组的
3.角色C可以看金额是1000元以下的(自定义条件是否可行?如果可以,请详细说明)
4.角色D可以看整个部门的
5.角色E可以看整个分公司的
6.角色F可以看各分子公司的

参考代码如下:代码量会非常小,而且根本不需要写6个函数的,其实就按钮3的方法其实可以同时满足6个需求的

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace DotNet.Example
{
using DotNet.WinForm;
using DotNet.Utilities;
using DotNet.Business; public partial class FrmByPermission : BaseForm
{
public FrmByPermission()
{
InitializeComponent();
} /*
问题:假设一个订单表,角色A可以看自己的,角色B可以看工作组的,
角色C可以看金额是1000元以下的(自定义条件是否可行?如果可以,请详细说明),角色D可以看整个部门的,
角色E可以看整个分公司的,角色F可以看各分子公司的,这该怎么做,还有怎样配置,谢谢。
*/ private void btnGetUser1_Click(object sender, EventArgs e)
{
// 1: 定义几个操作权限、谁有什么操作来控制,数据权限。
// 2: 系统里总有一个地方需要硬编码,例如 查看全公司的人员档案的权限。
// 3: 权限编码,用中文还是用英文,其实是一样的,主要看目标人群是什么, “AllCompany”权限 == “全公司”权限
// 4: 在上面的权限限制的基础上,继续+了条件表达式的2次限制权限 // 保存用户的设置
BaseParameterManager parameterManager = new BaseParameterManager();
parameterManager.SetParameter("User", this.UserInfo.Id, "Score", this.txtScore.Text); // 读取用户的积分条件设置
string score = parameterManager.GetParameter("User", this.UserInfo.Id, "Score"); string whereConditional = BaseUserEntity.FieldScore + "<= " + score;
BaseUserManager userManager = new BaseUserManager(this.UserInfo);
this.drgUser.DataSource = userManager.GetUserByPermission(whereConditional);
} private void btnGetUser2_Click(object sender, EventArgs e)
{
// 1: 在某个角色,就当是有相应的权限。
// 2: 有个角色就叫“全公司”数据查看的角色,例如“AllCompany”
// 3: 角色名称,用英文、用中文是一样的。
// 4: 在上面的权限限制的基础上,继续+了条件表达式的2次限制权限 // 保存用户的设置
BaseParameterManager parameterManager = new BaseParameterManager();
parameterManager.SetParameter("User", this.UserInfo.Id, "Score", this.txtScore.Text); // 读取用户的积分条件设置
string score = parameterManager.GetParameter("User", this.UserInfo.Id, "Score"); string whereConditional = BaseUserEntity.FieldScore + "<= " + score;
BaseUserManager userManager = new BaseUserManager(this.UserInfo);
this.drgUser.DataSource = userManager.GetUserByRolePermission(whereConditional);
} private void btnGetUser21_Click(object sender, EventArgs e)
{
// 角色A可以看自己的
BaseUserManager userManager = new BaseUserManager(this.UserInfo);
this.drgUser.DataSource = userManager.GetUserByRolePermission();
} private void btnGetUser22_Click(object sender, EventArgs e)
{
// 角色B可以看工作组的
BaseUserManager userManager = new BaseUserManager(this.UserInfo);
this.drgUser.DataSource = userManager.GetUserByRolePermission();
} private void btnGetUser23_Click(object sender, EventArgs e)
{
// 角色C可以看金额是1000元以下的(自定义条件是否可行?如果可以,请详细说明) // 保存用户的设置
BaseParameterManager parameterManager = new BaseParameterManager();
parameterManager.SetParameter("User", this.UserInfo.Id, "Score", this.txtScore.Text); // 读取用户的积分条件设置
string score = parameterManager.GetParameter("User", this.UserInfo.Id, "Score"); string whereConditional = BaseUserEntity.FieldScore + "<= " + score;
BaseUserManager userManager = new BaseUserManager(this.UserInfo);
this.drgUser.DataSource = userManager.GetUserByRolePermission(whereConditional);
} private void btnGetUser24_Click(object sender, EventArgs e)
{
// 角色D可以看整个部门
BaseUserManager userManager = new BaseUserManager(this.UserInfo);
this.drgUser.DataSource = userManager.GetUserByRolePermission();
} private void btnGetUser25_Click(object sender, EventArgs e)
{
// 角色E可以看整个分公司
BaseUserManager userManager = new BaseUserManager(this.UserInfo);
this.drgUser.DataSource = userManager.GetUserByRolePermission();
} private void btnGetUser26_Click(object sender, EventArgs e)
{
// 角色F可以看各分子公司
BaseUserManager userManager = new BaseUserManager(this.UserInfo);
this.drgUser.DataSource = userManager.GetUserByRolePermission();
}
}
}

C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - .NET商业化成品成熟各种数据权限的需求对应例子代码的更多相关文章

  1. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 主管可以看下属的数据

    主管可以看下属的数据,这个是经常用到的一个权限,不管是大公司,还是小公司都需要的功能. 通过以下2个方法,可以任意达到想要的效果了,设置简单灵活,还能递归运算下属,有时候简单好用就是硬道理. #reg ...

  2. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 远程同步服务器大量基础数据到客户端

    服务器上保存有上万条的基础数据,需要同步到全国各地的成千上万个客户端,而且这些基础数据也经常在有变化调整.这时候需要有一个稳定的数据同步程序,能分批同步基础数据,由于网络流量,网络的稳定性等因素,需要 ...

  3. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 区域管理功能增强(电子商务方向)

    由于公司是面向全国服务的.全国各地都有分公司,需要管理到覆盖全国的各种业务,各种业务系统信息系统的数据都需要规范化. 公司开展网络订单功能,在全国范围内实现网络下单.提高工作效率,提高各公司之间的数据 ...

  4. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 树形选择项目的标准例子

    用成套的现成的方法引导大家开发程序,整个团队的开发效率会很高.例如我们现在有30多个开发人员,若有300个开发人员,这开发工作很容易乱套,我们需要有效的管理维护所有团队的开发工作.把数据结构.通用的组 ...

  5. C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 省市区数据权限的实现效果

    折腾了2-3周,终于把全国网点数据权限,省.市.县数据规范化,查询权限规范化,基础数据规范化的思路理清楚了, 今天应该是一个里程碑式的一天 省市区数据规范化后 1:网点的基础数据可以更加严谨规范化. ...

  6. C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 用户权限树的实现 -- 权限递归树

    业务系统里经常会需要计算类似的树形权限树的业务需求 1:往往会有一些需求,a 对 b 有权限, b对c 有权限, 等等. 2:还需要很直观的看到,整个权限的树形关系,一目了然的那种. 3:程序调用简单 ...

  7. C#.NET 大型通用信息化系统集成快速开发平台 4.6 版本 - SSO单点登录接口

    当开发的系统多了.用户多了.合作伙伴多了.对接厂商多了.开发人员多了.部署的服务器也多了,各种安全问题就暴露出来了. 如何安全的把这些系统集成在一起?实现集群的单点登录.严格统一的用户安全体系管理? ...

  8. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 成熟组件化运行效果分解

    1:成熟的组件就是可以写很少的代码,可以实现很多功能.2:又可以用源码方式调用,又可以用dll方式调用.3:不需要学习里面的细节,只要会调用就可以了.4:成熟稳定,功能齐全,bug少,甚至没bug.5 ...

  9. C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 即时消息提醒功能改进

    可以给自己的信息管理系统增加一些即时消息提醒功能,简单方便,一般是一行代码就可以发送提醒信息了,方便二次开发,个性化改进. 1:可以用简拼,快速查找内部员工. 2:双击直接可以发QQ消息. 3:双击直 ...

随机推荐

  1. 从零开始学 Java - 数据库连接池的选择 Druid

    我先说说数据库连接 数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名.密码了,然后我们就可以打开门去任意的存取东西了. ...

  2. sqlserver性能调优第一步

    相信不少的朋友,无论是做开发.架构的,还是DBA等,都经常听说“调优”这个词.说起“调优”,可能会让很多技术人员心头激情澎湃,也可能会让很多人感觉苦恼,不知道如何入手.当然,也有很多人对此不屑一顾,因 ...

  3. xml与datatable类型互换

    //已测 private DataTable ConvertXMLToDataSet(string xmlData) { StringReader stream = null; XmlTextRead ...

  4. 心无旁骛,向死而生:WGDC2016给创企上的一堂课

    "这是最好的时代,也是最坏的时代:这是希望的春天,也是失望的冬天." ------狄更斯 WGDC2016落幕已经一月有余,我仍然记得会议结束后,穿过高大宽敞的国家会议中心大厅,走 ...

  5. VS2012 单元测试之泛型类(Generics Unit Test)

    关于单元测试,如果不会用可以参照我的上篇博文————在Visual Studio 2012使用单元测试 首先分享一篇博文,[Visual Studio] 开启Visual Studio 2012通过右 ...

  6. IOS开发基础知识--碎片34

    1:第三方插件SKSTableView在IOS7.1.1出现闪退的问题 解决办法,修改其内部源代码: (NSInteger)subRow { id indexpath = [NSIndexPath c ...

  7. 关于UIScollView 中的contentOffset 的理解

    大家对UIScollView 中的contentOffset 一直有疑问, 虽然看是一个简单的问题, 实际上并不简单. 当时我也有好多疑问, 后来在网上找了一下资料, 发现没有找到合理的解释, 因此自 ...

  8. Linux 通过sendmail 发邮件到外部邮箱

    最近在写自动化巡检脚本,想着怎么预警后自动发送邮件报警. 首先下载最新版本mailx-12.4.tar.bz2 # wget http://sourceforge.net/projects/heirl ...

  9. 全新的membership框架Asp.net Identity(1)——.Net membership的历史

    在Asp.net上,微软的membershop框架经历了Asp.net membership到Asp.net simple membership,再到现在的Asp.net Identity. 每一次改 ...

  10. Expdp 导数错误 ORA-00832

    问题实验环境 操作系统:Red Hat Enterprise Linux Server release 5.7 (Tikanga) 数据库  :Oracle Database 10g Release ...