RDIFramework.NET開發(fā)實(shí)例━表約束條件權(quán)限的使用-WinForm
為拉薩等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及拉薩網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)、拉薩網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
在實(shí)際的應(yīng)用中,客戶常有這樣的需求,指定用戶或角色可以看指定條件下的數(shù)據(jù),這里的“指定條件”在RDIFramework.NET框架中,我們稱作為“用戶或角色的約束條件表達(dá)式”。要完成這樣的功能,可以通過RDIFramework.NET框架中的用戶或角色的“約束條件權(quán)限設(shè)置”功能即可完成,再在你的業(yè)務(wù)表單中調(diào)用我們的得到用戶或角色的約束條件表達(dá)式接口即可完成。
可以調(diào)用框架提供的下面幾個(gè)接口即可完成對用戶或角色約束條件的得到。
1 2 | 1 、RDIFrameworkService.Instance.TableColumnsService.GetConstraint 2 、RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint |
下面我們以實(shí)例進(jìn)行展示約束條件權(quán)限的設(shè)置,可供用戶參考。
要使用“約束條件權(quán)限”首先需要在用戶權(quán)限或角色權(quán)限中設(shè)置用戶或角色的“約束條件”表達(dá)式。用戶的“約束條件權(quán)限設(shè)置”如下圖所示:
在“系統(tǒng)管理”→“用戶權(quán)限管理”→“權(quán)限設(shè)置”→“約束條件權(quán)限設(shè)置”,即可打開上面的窗口。在“表約束條件”設(shè)置窗口,可以選擇我們需要設(shè)置表的約束條件,點(diǎn)擊“設(shè)置條件表達(dá)式”即可設(shè)置。如下圖所示:
在上圖中,我們可以對設(shè)置的約束條件表達(dá)式進(jìn)行驗(yàn)證是否正確,可以還可以查看約束表達(dá)式所展示的數(shù)據(jù)集等操作,“查看約束數(shù)據(jù)集”如下圖所示:
“角色約束條件的設(shè)置”與“用戶約束條件設(shè)置”類似,可參考上面的“用戶約束條件設(shè)置”,角色約束條件設(shè)置窗口如下: 經(jīng)過上面的設(shè)置,現(xiàn)在我們就可以使用“約束條件”了,使用很簡單,只需在需要展示數(shù)據(jù)的地方通過框架提供的服務(wù)接口即可。下面我們以“產(chǎn)品管理”來演示約束條件權(quán)限。
在“產(chǎn)品管理”主界面的FormOnLoad事件代碼中調(diào)用以下接口即可得到用戶的約束條件:
1、RDIFrameworkService.Instance.TableColumnsService.GetConstraint(this.UserInfo, PiUserTable.TableName, this.UserInfo.Id, ProductInfoTable.TableName); //按表約束條件獲得數(shù)據(jù)(按當(dāng)前用戶)。 2、RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint(this.UserInfo, ProductInfoTable.TableName); //按表約束條件獲得數(shù)據(jù)(得到用戶與角色的約束條件)。
完整代碼如下:
//userConstraintExpress = RDIFrameworkService.Instance.TableColumnsService.GetConstraint(this.UserInfo, PiUserTable.TableName, this.UserInfo.Id, ProductInfoTable.TableName); //按表約束條件獲得數(shù)據(jù)(按當(dāng)前用戶)。 userConstraintExpress = RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint(this.UserInfo, ProductInfoTable.TableName); //按表約束條件獲得數(shù)據(jù)(得到用戶與角色的約束條件)。 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”設(shè)置了約束條件,現(xiàn)在我們以“yonghu”登錄系統(tǒng)看下他能看到的數(shù)據(jù):
我們對用戶“yonghu”設(shè)置的約束條件是單價(jià)大于10000,在上圖中,可以看到系統(tǒng)已經(jīng)自動(dòng)過濾了數(shù)據(jù)共143條數(shù)據(jù)。我們再以超級管理員用戶登錄進(jìn)來看下,如下圖所示: 以超級管理員登錄的數(shù)據(jù)是8971條。
以上只是一個(gè)簡單的實(shí)例展示,還可以更加靈活的應(yīng)用到其他各個(gè)實(shí)用的場合。
作者: EricHu 出處: http://www.cnblogs.com/huyong Email: 406590790@qq.com QQ 交流:406590790 QQ群:237326100 平臺(tái)博客: 【CSDN】http://blog.csdn.net/chinahuyong 【CNBLOGS】http://www.cnblogs.com/huyong 關(guān)于作者:高級工程師、信息系統(tǒng)項(xiàng)目管理師、DBA。專注于微軟平臺(tái)項(xiàng)目架構(gòu)、管理和企業(yè)解決方案,多年項(xiàng)目開發(fā)與管理經(jīng)驗(yàn),曾多次組織并開發(fā)多個(gè)大型項(xiàng)目,精通DotNet,DB(SqlServer、Oracle等)技術(shù)。熟悉Java、Delhpi及Linux操作系統(tǒng),有扎實(shí)的網(wǎng)絡(luò)知識(shí)。在面向?qū)ο?、面向服?wù)以及數(shù)據(jù)庫領(lǐng)域有一定的造詣。現(xiàn)從事DB管理與開發(fā)、WinForm、WCF、WebService、網(wǎng)頁數(shù)據(jù)抓取以及ASP.NET等項(xiàng)目管理、開發(fā)、架構(gòu)等工作。 如有問題或建議,請多多賜教! 本文版權(quán)歸作者和CNBLOGS博客共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過郵箱或QQ 聯(lián)系我,非常感謝。