仍是我上次提出的那個問題
問題:
假設一個訂單表,
1.角色A能夠看本身的
2.角色B能夠看工做組的
3.角色C能夠看金額是1000元如下的(自定義條件是否可行?若是能夠,請詳細說明)
4.角色D能夠看整個部門的
5.角色E能夠看整個分公司的
6.角色F能夠看各分子公司的函數
參考代碼以下:代碼量會很是小,並且根本不須要寫6個函數的,其實就按鈕3的方法其實能夠同時知足6個需求的this
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(); } } }