界面元素构件



    在控制业务模块维护里添加一条记录后,点击控制业务界面元素信息维护,进入该模块的维护界面刚添加的模块会在这里出现,如图所示:



该模块的界面字段信息:


l 界面元名称:是界面的名称。由用户输入,是必填项。界面元编辑类型为树时界面元名称将作为树根的名称显示。


l 界面元编辑类型:下拉选择,0Excel式表格;1:单据表单;2:树(只用于模块类型为“构造树和导航单表”);3:自定义单据表单(同单据表单);4:饼图;5:柱状图;6:折线图。由用户选择,是必选项。当选择“1单据表单”时,当点击变为新增状态或修改状态的操作时会弹出一个自动生成的单据式编辑框,在设置操作的“操作功能类型”时把确认(即保存)和取消设为“5:弹出编辑框确认操作”和“6:弹出编辑框取消操作”用于和弹出编辑框的确认和取消按钮邦定。界面元类型为单据表单和树时编辑方式只能为行编辑,自定义单据表单和单据表单是一样的,只不过自定义单据表单是自定义的。当界面类型为"7:单表图表"时只有456三种选项,其他情况不出现这三种选项。当选择“1单据表单”时,当点击变为新增状态或修改状态的操作时会弹出一个自动生成的单据式编辑框,在设置操作的“操作功能类型”时把确认(即保存)和取消设为“5:弹出编辑框确认操作”和“6:弹出编辑框取消操作”用于和弹出编辑框的“确认”和“取消”按钮绑定。界面元类型为单据表单和树时编辑方式只能为行编辑。自定义单据表单和单据表单是一样的,只不过自定义单据表单是自定义的。当界面元编辑类型为456的图表时,查询SQL中的参数取值都是以字符串替换方式来赋值。


l 编辑方式(或显示方式):下拉选择,0:全屏幕编辑(注意:如果执行SQL要设定为按记录行次执行,则界面元的编辑方式要设为全屏幕编辑方式);1:行编辑;2:不叠加图或增行编辑(是图形时为叠加图,不是图形时为增行编辑);3:叠加柱状图;4:叠加折线图。对于Excel式表格可以为全屏幕编辑或行编辑。但单据表单只有:行编辑。当界面元类型为"4:饼图"时只有"2:不叠加图"一项可选,当界面元类型为"5:柱状图""6:折线图"时,有"2:不叠加图""3:叠加柱状图""4:叠加折线图"三项可选。当界面元类型为0123时不出现234选项。当模块为动态刷新界面模板时,该属性为显示方式,显示方式有两种,0:重复模板行;1:固定模板。


l 维护表格宽度:一般为820px,可以设为其他大于0的任何值


l 界面元激活标签图像url:默认加载该页面时的标签页的图片,


l 界面元未激活标签图像url:为点击触发进入标签页的图片


l 单据式排列列宽组(逗号隔开):一组单据式编辑框的排列宽,之间用逗号隔开,必须是偶数组,因为汉字标签和输入框为一对。


l 表格最大行数:为表格时的显示表格最大行数。


l 界面元功能描述:该界面元的功能描述


l 默认排序字段名:在模块启动时对数据进行排序的默认字段名,在查询SQL中中要包含“#Order$”才起作用。


l 字段宽度单位:对于Excel表格类型的界面,指定其界面上的字段列宽度的单位,当选择百分比时,字段列宽将以百分比的形式展示,在字段信息维护模块中设置的字段百分比数之和必须为100,如果选择像素,则将以像素的形式展示字段列宽,在字段信息维护模块中设置的字段宽度值都将被识别为像素值。


l 数据加载后执行脚本:在界面元从数据库中取得数据并加载到页面上后执行的脚本,该脚本一般是对本界面元上的字段进行一些处理,如根据界面元字段的值改变字段的显示颜色:if(getFv('S','WorkUnit')!=getFv('S','OldWorkUnit'))


 getF('S','WorkUnit').style.color='red';


else getF('S','WorkUnit').style.color='';


l 查询SQL:查询显示数据用的select语句可能关联多个表。如果“界面元编辑类型”不是“树”, 第一句是获得页数的,如果有两个字段,第一个字段为页数,第二个字段为各种统计量描述文本,该描述文本可能放在页头也可能放在页根(描述文本中前五个字符为“ ROOT=”时描述文本将显示在页根,描述文本中前五个字符为“HEAD=”时描述文本将显示在页头),对于mini新版模板描述文本只能放在页根,它的统计量描述文本格式是“字段名1=文本1,字段名2=文本2”,指定该文本放在该字段名所在位置最下面,之间用逗号分开。第二句是查询的,之间用号隔开。二者的关联表和条件都一样。要保持二者关联表和条件一样。


第二句的查询语句中要有@pageNo_参数。为内定的取页数参数


第二句的查询语句中TOP后面的行数要与表格最大行数一样。


SQL中可以带过滤条件


如:depid=@depid_and


empID>@empID_


参数值都是用户在弹出过滤界面上输入或选择后传进来的。对于界面元类型为“1:单据表单”或“3:自定义单据表单”时,要把记录编号返回给界面,只要把记录编号作为字段名_pageNo_返回就可以了,_pageNo_不需要在字段信息维护模块中加它,也不需要在字段权限维护模块中给它分配权限。对于这两种界面元类型的查询结果集只能返回一条记录。如:


selectcount(personid) from T_Person;


ifexists(select * from T_Person where personName=@personName_)


SELECT TOP1 * FROM


(SELECTROW_NUMBER() OVER(ORDER BY personid) AS_pageNo_,personid,personName,age,sex,phone,address,dept 


FROMT_Person) AS a


wherea.personName =@personName_


else


SELECT TOP1 * FROM


(SELECTROW_NUMBER() OVER(ORDER BY personid) AS_pageNo_,personid,personName,age,sex,phone,address,dept 


FROMT_Person) AS a


wherea._pageNo_>@pageNo_


第一个SQL是返回页数(即记录数)


后面的SQL判断当personName =@personName_的记录是否存在。如果存在则进行定位查询。


如果“界面元编辑类型”是“树”,则表示对树进行维护,第一句是获得刚插入树结点的键值的变量名(该变量在操作SQL中定义过,可以通过它得到该树结点的键值),第二句是查询当前选中树结点的各个字段值,如:@WLFLID_(SQLServer变量)或WLFLID_(Oracle变量,注意要去掉:);


selectWLFLID,WLFLBH,WLFLMC,BZDW,ZJM,ABCFLM,TYBJ,TYBJName=case when tybj=1 then ‘停用’else ‘使用’end from t_wlfldy where WLFLID=@WLFLID_


 如果界面元编辑类型是Excel表格类型,并且要求点击表格列时按相应列字段进行排序,则在SQL中要包含“#Order$”以指示排序字段在SQL中所在位置。系统启动模块时会自动用默认排序字段名替换“#Order$”从而达到默认排序效果,在用户点击表格列时系统会用该字段的排序字段名替换“#Order$”从而达到按列排序的效果。当SQL中包含“#Order$”时必须要输入默认排序字段名。在字段信息维护中为相应字段设置排序字段名。


如果编辑方式为2、3、4的图表时,则查询SQL为两套或三套。当查询SQL为两套时,第一套为获得图表标题的SQL,也可以没有SQL即为空字符串,第二套SQL为生成图表的数据SQL,它有两个字段,第一个字段为要统计的分组项,第二个字段为统计的数据结果字段;当查询SQL为三套时,第一套为获得图表标题的SQL,也可以没有SQL即为空字符串,第二套SQL为生成第一个图表的数据SQL,它有两个字段,第一个字段为要统计的分组项,第二个字段为统计的数据结果字段,第三套SQL为生成第二个图表(与第二套SQL的图表进行叠加)的数据SQL,它同样有两个字段,第一个字段为要统计的分组项,第二个字段为统计的数据结果字段。如:


两套SQL:select '从'+@begin_+'到'+@end_+'的入库总量趋势图';


declare


@a_ datetime,


@b_ datetime


set @a_=convert(datetime,@begin_)


set @b_=convert(datetime,@end_)


exec RM_getMonthInOut @a_,@b_,0


三套SQL(第一个SQL为空串):; selectRoleName,count(*) from T_FuncRight,T_Role


whereT_FuncRight.ObjectID=T_Role.RoleID and T_Role.RoleID<120


group by RoleName;


select RoleName,count(*) fromT_FuncRight,T_Role


where T_FuncRight.ObjectID=T_Role.RoleIDand T_Role.RoleID>120


group by RoleName


对于模块类型为“弹出式界面”和模板为“弹出式Word编辑浏览界面时,弹出一个嵌入Word的网页,写查询SQL时与其他模块类型有所不同,第一个SQL是查询Word的文件相关信息,第二个SQL是一个执行SQL(其前提是第一个SQL的第五个字段取值不是只读),当保存word文档成功后执行的SQL,如:


SELECT FN=caseIsModify when 1 then PhysicsFileName+'_1.doc' else PhysicsFileName+'.doc' end,'D:\FileLibrary\ArticleLibrary\' getPath,'D:\FileLibrary\ArticleLibrary\'SavePath,PhysicsFileName+'_1.doc' SaveFileName,cast(1 as bit) readOnly PhysicsFileName+'.doc'OldFile FROM SDLNewsData.dbo.SDL_ArticleAppendix x where x.AppendixType=0 andx.LibraryID=@LibraryID_ update SDLNewsData.dbo.SDL_ArticleAppendixset IsModify=1 where AppendixID=@AppendixID_


两个SQL用“;”号分开,第一个SQL的字段内容和字段顺序必须为:要下载的word文件名;下载Word文件的物理绝对路径;保存文件的服务器端物理绝对路径;保存文件的文件名;是否为只读(如果只读则无法保存到服务器);未修改过的原文件物理名称(未作修改的最早原文件、用于与修改过的文件进行对比)共六个字段,SQL中必须要包含这六个字段,而且顺序不能颠倒,如果原文件名为空字符串,则无法打开原文件进行与现文件进行比较。如果是多条Word信息记录(多条word记录信息),则系统会把多个要下载的word文件连接起来放在一个Word编辑窗口中,除“要下载的word文件名”字段外其他字段只有第一条记录有效。第二个执行SQL中的参数在“界面元查询参数维护”中定义,第二个执行SQL在保存word文档成功后执行。如果第五个字段“是否为只读”为真,则第二个SQL将不起作用,可以不用写第二个SQL。


对于需要定位查询的界面元可以写三套SQL,第三套SQL用于过滤定位(不是过滤), 第三套SQL返回一个值即需要定位记录在结果集中的序号,其定位参数在界面元查询参数和过滤参数定义模块中完成定义.例如:


SELECTCEILING((count(*))/20.0) FROMSDLDataBase.dbo.SDL_FrameNumberLibrary


whereIsUse=0 and FrameNumber=@FrameNumber_;


SELECTTOP 20 * FROM (SELECT ROW_NUMBER() OVER(ORDER BY FrameNumber)AS z,


FrameNumber,IsUse=caseIsUse when 0 then '未使用' when 1 then '已使用' end


FROMSDLDataBase.dbo.SDL_FrameNumberLibrary


whereIsUse=0 and FrameNumber=@FrameNumber_)a


wherea.z>@pageNo_;


selectTOP 1 z from (SELECT ROW_NUMBER() OVER(ORDER BY FrameNumber)AS z,


FrameNumber


FROMSDLDataBase.dbo.SDL_FrameNumberLibrary


whereIsUse=0 and FrameNumber=@FrameNumber_) a


wherea.FrameNumber=@FrameNumber1_


以上第三套SQL返回z也就是要定位记录的行号,定位参数@FrameNumber1_要在界面元查询参数中定义,参数取值方式为“用户选择过滤定位”,在过滤参数定义模块中的定义与一般过滤参数的定义相同。


如果是Oracle数据库,可以写一个存储过程名称,写法为:@ORACLE-PACK_:+存储过程名,系统发现@ORACLE-PACK_:就认为是Oracle返回结果集的存储过程。如果是树的查询SQL写法为(Oracle)


:SSID_;SELECT SSID,SSMC,SSDM,PSSID FROM ZMZXTS.TSBM_SS WHERESSID=:SSID_;第一个SSID_为在操作中的执行SQL中的变量名称(必须这样),为了在执行SQL时返回树节点键值,该变量为树结构表中的主键值变量。


l 构造树SQL用于构造树的SQL .如果界面模块类型为“构造树和导航单表”或“树导航的主细表”,则第一个界面元必须填写构造树SQL,在界面模块类型为“构造树和导航单表”情况下,如果界面元类型为树则可以维护树,查询SQL必须填写为该树的某个节点的表单数据SQL,完成对树的其他字段项的显示,并可以对树进行增删改等操作。对于构造树SQL内定了一个参数为@level_(树的层次数,根为0,根只有一个且不可见,任何树在构造时都要自动先构造一个根层数为0,然后再构造业务数据,层次为123……;也就是说从层次1开始才是业务数据),构造树SQL中可以有@level_变量也可以不用它不用定义@level_参数,@level_参数是由系统以参数替换的形式把值放到构造树SQL中的。如:if(@UpCode_='0')


select AreaCode,ShortAreaName fromRM_ProducingArea where UpCode IS NULLorder by AreaCodeelse select AreaCode,ShortAreaName fromRM_ProducingArea where UpCode=@UpCode_ order by AreaCode,其中参数@UpCode_不用定义,它是U_ControlUnit表中字段TreeParentFieldName指定的字段名前面加上”@”后面加上”_”,树的父结点取值直接替换掉树SQL’@’+TreeParentFieldName+’_’的字符串就可以了。如果是字符串类型则树SQL要写成:if('@UpCode_'='0')


select AreaCode,ShortAreaName fromRM_ProducingArea where UpCode IS NULLorder by AreaCode


else


select AreaCode,ShortAreaName fromRM_ProducingArea where UpCode='@UpCode_'order by AreaCode


如果为Oracle写法如下:


SELECT * FROM


(


  SELECTSSID,SSMC,PSSID,SSDM FROM  ZMZXTS.TSBM_SS WHERE :SSID_='0' AND (PSSID IS NULL ORPSSID='0')


  UNION


  SELECTSSID,SSMC,PSSID,SSDM FROM ZMZXTS.TSBM_SS WHERE:SSID_<>'0' AND PSSID = :SSID_


)


ORDER BY SSDM


其中变量:SSID_树关联主键物理字段名SSID组合而成(必须这样)。


有构造树SQL的界面元必须填写“树关联主键物理字段名”、“树结点显示文本字段名”、“树关联父物理字段名”三项内容。它们的作用如下:


l 树关联主键物理字段名(弹出框选中键值字段名)树节点的主键,过滤其他数据时要取树节点的键值时用到。在构造树SQL中必须要包含该字段组合成的变量,比如树关联主键物理字段名为TreeID,如果是SQLServer,则在构造树SQL中必须要包含@TreeID_变量,Oracle在构造树SQL中必须要包含:TreeID_变量。当该界面元所属模块是弹出式界面时该字段为键值字段名,是点击编辑字段时在弹出界面选择记录时用于获取键值的字段。


l 树结点显示文本字段名(弹出框选中文本字段名)用于显示树结点的文本内容。当该界面元所属模块是弹出式界面时该字段为显示文本字段名,是点击编辑字段时在弹出界面选择记录时用于获取显示文本的字段。


l 树关联父物理字段名:某节点的父键值,可以将该字段名前加@号放到构造树SQL中当参数使用,不用定义这个参数,系统会把父键值以参数替换的形式放到造树SQL中。


说明:构造树SQL的其他参数和查询SQL共用一套参数。也就是说,定义的查询参数,可以在构造树SQL和查询SQL中同时出现。


l 字段信息存储表:'':基本表(为空或空串);'1':物理表1;'2':物理表2;'3':;物理表3;'4':物理表4;'5':物理表5。为了把字段信息存于不同的表,从而提高生成界面的速度。最好新增界面元时选择存储表时在这6个表之间进行均匀分配(现在已经改为由系统自动进行平均分配物理表,选择已经无效)


l 用户添加字段的物理表名:当用户使用“用户字段信息维护”模块添加字段时,将在这个指定的物理表上新增字段,它指定了用户在本界面元上可添加字段的物理表。如果指定了添加字段的物理表名,则必须在查询SQL中加上“_$@#&_”符号,用于指定添加字段后在SQL中的添加位置,同时在该界面元对应的新增记录的SQL中(在操作SQL维护模块)加上“_$@#&_”和“_@$@#&_”两个符号,前者用于指定用户添加字段的插入SQL中字段名位置,后者用于指定用户添加字段的插入SQL中参数位置;在该界面元对应的修改记录的SQL中(在操作SQL维护模块)加上“_=$@#&_”,用于指定用户添加字段的修改SQL中“字段=参数”位置。


l 用户添加字段的相关界面元名列表:当用户使用“用户字段信息维护”模块添加字段时,影响到其它界面元需要在其它界面元的查询SQL中添加字段显示的界面元列表。多个界面元时,之间用逗号分开。这里指定的界面元列表,在用户添加字段时,只是要对它们的查询SQL作修改,其它的操作SQL不做修改。


l 是否分配字段权限该界面元是否需要通过字段权限分配来控制字段的权限,如果选中该项(设置为是),则每个字段都要进行权限设置,系统通过权限设置来决定字段的浏览、修改、新增等权限。


l 是否分配操作权限该界面元是否需要通过操作权限分配来控制操作的权限,如果选中该项(设置为是),则每个操作都要进行权限设置,系统通过权限设置来决定操作的使用权限。


l 锁定开始列号:用于mini版界面,指定一个锁定列的开始号。


l 锁定结束列号:用于mini版界面,指定一个锁定列的结束号。


l 选中行执行脚本:对于Excel式表格,在选中某行变色时执行的脚本。

该模块有新增、修改、删除、复制、导入操作。删除时只能删除没有下级的界面元,否则系统会报错。要删除有下级的界面元,必须删除该界面元的所有下级界面元。该模块还有SQL生成器,为查询SQL生成一个SQL模板供参考。复制为导入做准备,复制某模块下的界面元(不能复制模块节点)导入到另一模块下或导入到另一模块界面元下。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值