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