MisShop中建立頁(yè)面所使用的模板,可以根據(jù)需要自己開(kāi)發(fā)和修改樱衷。模板開(kāi)發(fā)登淘,跟頁(yè)面類似箫老,主要不同在于參數(shù)不一樣黔州,計(jì)算結(jié)果是設(shè)計(jì)器里的頁(yè)面阔籽,而頁(yè)面的計(jì)算結(jié)果才是網(wǎng)頁(yè)。
創(chuàng)建模板時(shí)笆制,單擊導(dǎo)航區(qū)按鈕模板,進(jìn)入模板導(dǎo)航樹(shù)证薇,工作區(qū)和頁(yè)面的工作區(qū)一樣,都是在單元格中布置元素浑度。
模板設(shè)計(jì)時(shí)的添加鸦概、刪除、使用控件窗市、布局等編輯功能與頁(yè)面開(kāi)發(fā)一致,相當(dāng)于做一個(gè)通用的頁(yè)面咨察。
模板頁(yè)面數(shù)據(jù)中,有@tl_table
參數(shù)脓诡,表示這個(gè)模板生成頁(yè)面時(shí)素跺,頁(yè)面對(duì)應(yīng)數(shù)據(jù)表的表名誉券。在設(shè)計(jì)頁(yè)面的添加頁(yè)面時(shí),選擇了頁(yè)面對(duì)應(yīng)數(shù)據(jù)表踊跟,就自動(dòng)把這個(gè)參數(shù)傳到了頁(yè)面。
參數(shù)中箕憾,以tl_
開(kāi)頭的參數(shù)拳昌,只在模板里使用袭异,生成頁(yè)面的時(shí)候炬藤,這個(gè)變量就沒(méi)有了。所以上真,在模板里 tl_
開(kāi)頭的參數(shù),都要用公式將它變成值睡互,才能在設(shè)計(jì)器頁(yè)面里顯示陵像,或者需要在添加頁(yè)面的時(shí)候就珠,手動(dòng)設(shè)置醒颖,然后傳輸給模板,模板再以此生成頁(yè)面图贸。其他名稱的變量,在生成頁(yè)面時(shí)都能夠保留偿洁。
我們來(lái)看看平臺(tái)默認(rèn)提供的列表模板沟优,是怎么樣配置的涕滋。
模板數(shù)據(jù)配置挠阁。在模板的數(shù)據(jù)變量配置中溯饵,能看到
tl_queryds
變量和tl_selectds
變量锨用。
其中,tl_queryds
的初始化函數(shù)是:DataSet.parse(tl.getTableInfo(@tl_table, Constant.template.query_cols))
增拥,表示在對(duì)應(yīng)的表中,根據(jù)查詢字段分組掌栅,找到的字段名、字段類型等表結(jié)構(gòu)信息猾封,tl_queryds.value
就表示字段名。
tl_selectds
的初始化函數(shù)是:DataSet.parse(tl.getTableInfo(@tl_table, Constant.template.list_cols).removeValue(tl.getTableDispColumn(@tl_table)).subList(3))
齐莲,表示根據(jù)列表字段分組查找到的表結(jié)構(gòu)枚钓,包含字段名等信息铅搓。
其他變量如ds
搀捷、checked
多望、me
等數(shù)據(jù)變量,跟頁(yè)面中的一樣怀偷。ds
的泛型是template
,在生成頁(yè)面時(shí)會(huì)改變成頁(yè)面對(duì)應(yīng)的數(shù)據(jù)表饭于。-
功能區(qū)
靠頁(yè)面頂端主要是功能按鈕,A1格的=" " +@tl_table+"列表"
掰吕,在頁(yè)面中會(huì)變成如= 用戶列表
颅痊,樣式中設(shè)置為粗體殖熟,在最終效果中會(huì)顯示這頁(yè)的標(biāo)題斑响。B1格的增加钳榨、C1格的批量刪除纽门、D1格的導(dǎo)入、K1格的導(dǎo)出赏陵、L1格的折疊與展開(kāi),都是對(duì)應(yīng)的控件候醒,配置與頁(yè)面中類似。
查詢區(qū)
查詢區(qū)顯示了查詢單表單和查詢按鈕倒淫。
A1格中的=tl_queryds.select(`tl_queryds.value`,,,,,,,3)
败玉,表示按照字段名擴(kuò)展,每3個(gè)為一組运翼,這個(gè)格顯示第一個(gè)。即每行顯示3個(gè)血淌,超過(guò)3個(gè)的往下?lián)Q一行繼續(xù)顯示。系統(tǒng)取值時(shí)會(huì)3個(gè)同時(shí)取出來(lái)癌淮,后邊的再根據(jù)偏差到這個(gè)里面取值沦补。
B1格的=ifv(tl_queryds.value!=null,"=query.ds."+tl_queryds.value,"")
乳蓄,表示如果tl_queryds.value
的結(jié)果不為空夕膀,則把這個(gè)格子的值設(shè)置為=query.ds.字段名
,在最終頁(yè)面中就會(huì)顯示為輸入查詢條件的輸入框魂奥。
后面的D2、G2格的=dsoff(tl_queryds.value,1)
捧弃,=dsoff(tl_queryds.value,2)
,表示獲得這個(gè)字段分組中下一個(gè)字段名违霞。
后面的E2、H2格的=ifv(dsoff(tl_queryds.value,1)!=null,"=query.ds."+dsoff(tl_queryds.value,1),"")
买鸽、=ifv(dsoff(tl_queryds.value,2)!=null,"=query.ds."+dsoff(tl_queryds.value,2),"")
表示設(shè)置這個(gè)格子的值為相應(yīng)的=query.ds.字段名
。其中妆艘,高級(jí)屬性中上主格都設(shè)置為A2,表示隨A2而變批旺。
列可以為空表示這一列有內(nèi)容時(shí)诵姜,右邊的單元格向右偏移。橫向侵占表示這一列有內(nèi)容時(shí)棚唆,把右側(cè)的單元格占領(lǐng)。
第三行的查詢按鈕與頁(yè)面一樣宵凌,啟動(dòng)查詢。列表區(qū)
列表區(qū)以表格形式顯示數(shù)據(jù)表中的記錄瞎惫。其中第四行是顯示表格的標(biāo)題,第五行是顯示數(shù)據(jù)逗扒。
A4格是id,是固定值,在設(shè)計(jì)器頁(yè)面和瀏覽器頁(yè)面都顯示一樣的现恼。
A5格值="=ds.select(ds.id)"
是固定的,用于生成擴(kuò)展顯示每個(gè)記錄id的公式=ds.select(ds.id)
始锚。
B4格是全選框喳逛,B5格是復(fù)選框瞧捌,都是跟checked
變量綁定。
C4格=tl.getTableDispColumn(@tl_table)
是顯示數(shù)據(jù)表的顯示字段的字段名殿怜,默認(rèn)是名稱字段曙砂,C5格="=ds."+tl.getTableDispColumn(@tl_table)
是生成顯示名稱字段數(shù)據(jù)的公式头谜。
D4格=tl_selectds.select(tl_selectds.value)
是顯示數(shù)據(jù)表字段名鸠澈,D5格是=ifv(tl_selectds.value!=null,"=ds."+tl_selectds.value,"")
顯示其他字段的數(shù)據(jù)。此時(shí)注意tl_selectds
變量的定義中已經(jīng)移除掉了名稱字段笑陈,所以D4格不會(huì)顯示,而D3格我們手動(dòng)加上了名稱字段乖菱。D4單元格高級(jí)屬性為橫向侵占,表示D4單元格的公式出來(lái)幾個(gè)字段就向右方侵占多少個(gè)格子块请,而J4拳缠、J5單元格的高級(jí)屬性中有個(gè)占位屬性設(shè)置為列可以為空,表示擴(kuò)展到這的時(shí)候窟坐,這個(gè)格會(huì)不斷復(fù)制,向右推移哲鸳,而如果列的所有單元格值都為空,則這一列將被刪掉徙菠。
同時(shí),C5缺狠、K5單元格控件屬性為鏈接萍摊,點(diǎn)擊會(huì)跳轉(zhuǎn)到詳情頁(yè)面挤茄,鏈接的控件屬性中冰木,鏈接目標(biāo)也是模板笼恰,傳遞參數(shù)ds.id
是固定值歇终。L5單元格控件屬性為刪除數(shù)據(jù),點(diǎn)擊后會(huì)刪除該行數(shù)據(jù)练湿。
在C4猴仑、C5基本屬性的格名一欄公式為tl.calcStaticProperty("head_ds."+tl_selectds.value)
和tl.calcStaticProperty("ds."+tl_selectds.value)
,表示在生成頁(yè)面的格名屬性中肥哎,設(shè)置靜態(tài)值為ds.字段名
辽俗。如果公式為tl.calcExp("ds."+tl_selectds.value)
,生成的值會(huì)放在格名屬性的公式一列篡诽,會(huì)在頁(yè)面生成網(wǎng)頁(yè)時(shí)動(dòng)態(tài)計(jì)算崖飘。格名是代表這個(gè)單元格,例如目前常用A3杈女、C5表示這個(gè)單元格朱浴,以后也可以用格名表示單元格,格名的功能暫時(shí)未用达椰。分頁(yè)控件
第六行是一個(gè)分頁(yè)控件翰蠢,用于對(duì)表格中的數(shù)據(jù)分頁(yè)顯示啰劲。
編輯模板與列表模板類似梁沧,定義了tl_fields
和tl_longfields
變量集,獲得數(shù)據(jù)表的字段名蝇裤。其中tl_fields
定義是DataSet.parse(AuxTable.getCols(@tl_table,[Constant.subtype.shorttext,Constant.subtype.password,Constant.type.number,Constant.type.date,Constant.type.logic,Constant.type.selection,Constant.type.reference,Constant.type.attachment]).removeAll(["id","wx_openid","mis_valid"]))
廷支,表示獲得大部分字段的字段名。
tl_longfields
定義為DataSet.parse(AuxTable.getCols(@tl_table,[Constant.subtype.longtext,Constant.subtype.html]))
栓辜,表示獲得字段類型為長(zhǎng)文本或html的字段名恋拍。