數(shù)據(jù)規(guī)范主要是指解決我們在表中輸入、顯示數(shù)據(jù)時幾種通用的模式、規(guī)范。我們也可以換一種叫法:數(shù)據(jù)錄入規(guī)范。我們可以通過這些規(guī)范的設(shè)置,即可以做到不寫代碼也可以完成常規(guī)開發(fā)的70-80%功能。
數(shù)據(jù)規(guī)范的類型有以下幾種:請根據(jù)索引到相應(yīng)的章節(jié)去詳細(xì)了解其功能與使用方法。
ID | 數(shù)據(jù)規(guī)范分類 |
1 | 自動編號 |
2 | 窗口選擇 |
3 | 標(biāo)準(zhǔn)字典 |
4 | 圖片字典 |
5 | 列表項目 |
6 | 系統(tǒng)變量 |
7 | 目錄樹篩選 |
8 | 自動填充 |
9 | 智能篩選 |
打開方式
打開表屬性設(shè)置窗口——》點擊“列數(shù)據(jù)規(guī)范”按鈕切換到相應(yīng)的視圖——》點擊“數(shù)據(jù)規(guī)范(RuleID)”列、“自動錄入(RuleID)”、“字典規(guī)范(RuleID)”都可以打開“數(shù)據(jù)規(guī)范管理”窗口。
一些共性的屬性介紹
規(guī)范名稱: 數(shù)據(jù)規(guī)范的名稱,方便自己管理。
分類: 給數(shù)據(jù)規(guī)范起一個目錄名稱,方便進行分類管理。也方便篩選。
數(shù)據(jù)源名稱:是指當(dāng)前數(shù)據(jù)規(guī)范涉及的數(shù)據(jù)庫來源。
SQL語句:加載數(shù)據(jù)所用的SQL語句。這里的SQL語句不僅支持常規(guī)的SQL語句,另外還支持幾種特殊的參數(shù)。 點擊右邊的編輯按鈕還可以打開“SQL編輯”窗口,具體教程可以參考“SQL編輯窗口”。
框架中所有數(shù)據(jù)規(guī)范用到SQL語句的地方都增加了添加變量參數(shù)的功能。這樣,我們就可以利用以下幾種變量,以實現(xiàn)靈活的加載、篩選,甚至是做一些權(quán)限的設(shè)置。像全國地區(qū)下拉選擇這樣的需求,也可以利用變量實現(xiàn)有條件地動態(tài)加載。某種意義上,這種方式變相的實現(xiàn)了類似存儲過程的效果。
1.全局代碼中的系統(tǒng)變量。比如Proj.User.UserID這類的。
特殊字符
代表全局變量
實際引用屬性
{U.S.E.R.N.M}
用戶名稱
Proj.User.UserName
{U.S.E.R.I.D}
用戶ID
Proj.User.UserID
{U.S.E.R.D.P.N.M}
部門名稱
Proj.User.GroupName
{U.S.E.R.D.P.I.D}
部門ID
Proj.User.GroupID
{U.S.E.R.P.G.I.D}
項目ID
Proj.User.ProgramID
{U.S.E.R.P.G.N.M}
項目名稱
Proj.User.ProgramName
{U.S.E.R.P.S.I.D}
職位ID
Proj.User.PositionID
{U.S.E.R.P.S.N.M}
職位名稱
Proj.User.PositionName
{U.S.E.R.C.P.I.D}
公司ID
Proj.User.CompanyID
{Contain.Admin}
包含管理員權(quán)限
Proj.User.Roles.Contains(Proj.AdminRoleID)
{Contain.Developer}
包含開發(fā)者權(quán)限
Proj.User.Roles.Contains(Proj.DeveloperRoleID)
{AdminID}
管理員ID
Proj.AdminRoleID
{DeveloperID}
開發(fā)者ID
Proj.DeveloperRoleID
注意:在使用這類系統(tǒng)變量時得用一對單引號包住,如:GroupID='{U.S.E.R.D.P.I.D}'。另外,這類系統(tǒng)變量不是憑空就有的,需要我們在“代碼管理 ”——>“登陸事件”——>“AfterConfirm”事件里面給每個用戶根據(jù)實際的業(yè)務(wù)數(shù)據(jù)賦上值。
下面以一個示例來說明如何操作,示例中僅給用戶的部門ID賦值,其他的如部門名稱、公司名稱這些得靠自己去擴展。
Vb.Net
Dim dt As DataTableHelp=Proj.SysDataFactory("UserDB").ExecuteDataTableHelp("select * from EmployeeInfo where EmployeeID='" & Proj.User.UserID & "'")
If dt IsNot Nothing AndAlso dt.DataRows.Count>0 Then
Dim dr As RowData=dt.DataRows(0)
Proj.User.GroupID=dr("Department").ToString()
End If
C#
DataTableHelp dt = Proj.SysDataFactory("UserDB").ExecuteDataTableHelp("select * from EmployeeInfo where EmployeeID='" + Proj.User.UserID + "'");
if (dt != null && dt.DataRows.Count > 0)
{
RowData dr = dt.DataRows(0);
Proj.User.GroupID = dr("Department").ToString();
}
2.當(dāng)前行指定字段的值。
格式說明:{ R("字段名稱")}, R代表Proj.CurrentGrid.CurrentRowData。
示例:
select typename from PMWordtype where ID like '%{ R("ID")}'
3.指定當(dāng)前窗體指定表當(dāng)前行指定字段的值。
格式說明:{T("表名稱").R("字段名稱")},T代表當(dāng)前窗口中名為“表名稱”的表,R代表當(dāng)前行中“字段名稱”字段中的值。
4.指定窗體指定表當(dāng)前行指定字段的值。
格式說明:{F("窗體名稱").T("表名稱").R("字段名稱")},這個參數(shù)就跟代碼Proj.OpenedForms("窗體名稱").Grids("表名稱").CurrentRowData("字段名稱")的值一致。
5.Var變量
格式說明:{Vars("變量名")},這個參數(shù)就跟代碼Proj.Vars("變量名")的值一致。
6、當(dāng)前桌面當(dāng)前窗體指定表當(dāng)前行指定字段的值
格式說明:{D("表名稱").R("字段名稱")},這個參數(shù)就跟代碼Proj.CurrentDesktop.CurrentForm.Grids("表名稱").CurrentRowData("字段名稱")的值一致。
7、父表的當(dāng)前行指定字段的值
格式說明:{ P("字段名稱")}, P代表Proj.CurrentSmGrid.Relation.ParentGrid.CurrentRowData("字段名稱")。