4.7 开发技巧:模板开发

MisShop中建立页面所使用的模板,可以根据需要自己开发和修改。模板开发,跟页面类似,主要不同在于参数不一样,计算结果是设计器里的页面,而页面的计算结果才是网页。

创建模板时,单击导航区按钮模板,进入模板导航树,工作区和页面的工作区一样,都是在单元格中布置元素。

模板设计时的添加、删除、使用控件、布局等编辑功能与页面开发一致,相当于做一个通用的页面。

模板页面数据中,有@tl_table参数,表示这个模板生成页面时,页面对应数据表的表名。在设计页面的添加页面时,选择了页面对应数据表,就自动把这个参数传到了页面。

参数中,以tl_ 开头的参数,只在模板里使用,生成页面的时候,这个变量就没有了。所以,在模板里 tl_ 开头的参数,都要用公式将它变成值,才能在设计器页面里显示,或者需要在添加页面的时候,手动设置,然后传输给模板,模板再以此生成页面。其他名称的变量,在生成页面时都能够保留。

我们来看看平台默认提供的列表模板,是怎么样配置的。

  1. 模板数据配置。在模板的数据变量配置中,能看到tl_queryds变量和 tl_selectds变量。
    其中,tl_queryds的初始化函数是:DataSet.parse(tl.getTableInfo(@tl_table, Constant.template.query_cols)),表示在对应的表中,根据查询字段分组,找到的字段名、字段类型等表结构信息,tl_queryds.value就表示字段名。
    tl_selectds的初始化函数是:DataSet.parse(tl.getTableInfo(@tl_table, Constant.template.list_cols).removeValue(tl.getTableDispColumn(@tl_table)).subList(3)),表示根据列表字段分组查找到的表结构,包含字段名等信息。
    其他变量如dscheckedme等数据变量,跟页面中的一样。ds的泛型是template,在生成页面时会改变成页面对应的数据表。

  2. 功能区
    靠页面顶端主要是功能按钮,A1格的 =" " +@tl_table+"列表",在页面中会变成如= 用户列表,样式中设置为粗体,在最终效果中会显示这页的标题。B1格的增加、C1格的批量删除、D1格的导入、K1格的导出、L1格的折叠与展开,都是对应的控件,配置与页面中类似。

  3. 查询区
    查询区显示了查询单表单和查询按钮。
    A1格中的 =tl_queryds.select(`tl_queryds.value`,,,,,,,3),表示按照字段名扩展,每3个为一组,这个格显示第一个。即每行显示3个,超过3个的往下换一行继续显示。系统取值时会3个同时取出来,后边的再根据偏差到这个里面取值。
    B1格的=ifv(tl_queryds.value!=null,"=query.ds."+tl_queryds.value,""),表示如果 tl_queryds.value的结果不为空,则把这个格子的值设置为=query.ds.字段名,在最终页面中就会显示为输入查询条件的输入框。
    后面的D2、G2格的=dsoff(tl_queryds.value,1)=dsoff(tl_queryds.value,2),表示获得这个字段分组中下一个字段名。
    后面的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),"")表示设置这个格子的值为相应的=query.ds.字段名。其中,高级属性中上主格都设置为A2,表示随A2而变。
    列可以为空表示这一列有内容时,右边的单元格向右偏移。横向侵占表示这一列有内容时,把右侧的单元格占领。
    第三行的查询按钮与页面一样,启动查询。

  4. 列表区
    列表区以表格形式显示数据表中的记录。其中第四行是显示表格的标题,第五行是显示数据。
    A4格是id,是固定值,在设计器页面和浏览器页面都显示一样的。
    A5格值="=ds.select(ds.id)"是固定的,用于生成扩展显示每个记录id的公式=ds.select(ds.id)
    B4格是全选框,B5格是复选框,都是跟checked变量绑定。
    C4格=tl.getTableDispColumn(@tl_table)是显示数据表的显示字段的字段名,默认是名称字段,C5格="=ds."+tl.getTableDispColumn(@tl_table)是生成显示名称字段数据的公式。
    D4格=tl_selectds.select(tl_selectds.value)是显示数据表字段名,D5格是=ifv(tl_selectds.value!=null,"=ds."+tl_selectds.value,"")显示其他字段的数据。此时注意tl_selectds变量的定义中已经移除掉了名称字段,所以D4格不会显示,而D3格我们手动加上了名称字段。D4单元格高级属性为横向侵占,表示D4单元格的公式出来几个字段就向右方侵占多少个格子,而J4、J5单元格的高级属性中有个占位属性设置为列可以为空,表示扩展到这的时候,这个格会不断复制,向右推移,而如果列的所有单元格值都为空,则这一列将被删掉。
    同时,C5、K5单元格控件属性为链接,点击会跳转到详情页面,链接的控件属性中,链接目标也是模板,传递参数ds.id是固定值。L5单元格控件属性为删除数据,点击后会删除该行数据。
    在C4、C5基本属性的格名一栏公式为tl.calcStaticProperty("head_ds."+tl_selectds.value)tl.calcStaticProperty("ds."+tl_selectds.value),表示在生成页面的格名属性中,设置静态值为ds.字段名。如果公式为tl.calcExp("ds."+tl_selectds.value),生成的值会放在格名属性的公式一列,会在页面生成网页时动态计算。格名是代表这个单元格,例如目前常用A3、C5表示这个单元格,以后也可以用格名表示单元格,格名的功能暂时未用。

  5. 分页控件
    第六行是一个分页控件,用于对表格中的数据分页显示。

编辑模板与列表模板类似,定义了tl_fieldstl_longfields变量集,获得数据表的字段名。其中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])),表示获得字段类型为长文本或html的字段名。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358