1. 程式人生 > >RDIFramework.NET開發例項━表約束條件許可權的使用-WinForm

RDIFramework.NET開發例項━表約束條件許可權的使用-WinForm

RDIFramework.NET開發例項━表約束條件許可權的使用-WinForm

      在實際的應用中,客戶常有這樣的需求,指定使用者或角色可以看指定條件下的資料,這裡的“指定條件”在RDIFramework.NET框架中,我們稱作為“使用者或角色的約束條件表示式”。要完成這樣的功能,可以通過RDIFramework.NET框架中的使用者或角色的“約束條件許可權設定”功能即可完成,再在你的業務表單中呼叫我們的得到使用者或角色的約束條件表示式介面即可完成。

       可以呼叫框架提供的下面幾個介面即可完成對使用者或角色約束條件的得到。

  1、RDIFrameworkService.Instance.TableColumnsService.GetConstraint
  2、RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint

  下面我們以例項進行展示約束條件許可權的設定,可供使用者參考。

      要使用“約束條件許可權”首先需要在使用者許可權或角色許可權中設定使用者或角色的“約束條件”表示式。使用者的“約束條件許可權設定”如下圖所示:

  

  在“系統管理”→“使用者許可權管理”→“許可權設定”→“約束條件許可權設定”,即可開啟上面的視窗。在“表約束條件”設定視窗,可以選擇我們需要設定表的約束條件,點選“設定條件表示式”即可設定。如下圖所示:

  

      在上圖中,我們可以對設定的約束條件表示式進行驗證是否正確,可以還可以檢視約束表示式所展示的資料集等操作,“檢視約束資料集”如下圖所示:

  

  “角色約束條件的設定”與“使用者約束條件設定”類似,可參考上面的“使用者約束條件設定”,角色約束條件設定視窗如下:

  

  經過上面的設定,現在我們就可以使用“約束條件”了,使用很簡單,只需在需要展示資料的地方通過框架提供的服務介面即可。下面我們以“產品管理”來演示約束條件許可權。

     在“產品管理”主介面的FormOnLoad事件程式碼中呼叫以下介面即可得到使用者的約束條件:  

1、RDIFrameworkService.Instance.TableColumnsService.GetConstraint(this.UserInfo, PiUserTable.TableName, this.UserInfo.Id, ProductInfoTable.TableName); //按表約束條件獲得資料(按當前使用者)。
2、RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint(this.UserInfo, ProductInfoTable.TableName); //按表約束條件獲得資料(得到使用者與角色的約束條件)。

  完整程式碼如下:  

//userConstraintExpress = RDIFrameworkService.Instance.TableColumnsService.GetConstraint(this.UserInfo, PiUserTable.TableName, this.UserInfo.Id, ProductInfoTable.TableName); //按表約束條件獲得資料(按當前使用者)。
userConstraintExpress = RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint(this.UserInfo, ProductInfoTable.TableName); //按表約束條件獲得資料(得到使用者與角色的約束條件)。

var recordCount = 0;
if (!string.IsNullOrEmpty(userConstraintExpress))
{
    if (!string.IsNullOrEmpty(this.searchValue))
    {
        this.searchValue += " AND " + userConstraintExpress;
    }
    else
    {
        this.searchValue = userConstraintExpress;
    }
}
this.DTProductInfo = GetData(out recordCount, ucPager.PageIndex, ucPager.PageSize, this.searchValue);
ucPager.RecordCount = recordCount;
ucPager.InitPageInfo();    

  在上圖中我們對使用者”yonghu”設定了約束條件,現在我們以“yonghu”登入系統看下他能看到的資料:

  

  我們對使用者“yonghu”設定的約束條件是單價大於10000,在上圖中,可以看到系統已經自動過濾了資料共143條資料。我們再以超級管理員使用者登入進來看下,如下圖所示:

  

  以超級管理員登入的資料是8971條。

      以上只是一個簡單的例項展示,還可以更加靈活的應用到其他各個實用的場合。