在利用华丹快速开发平台进行业务系统开发,或利用华丹WEB报表平台开发数据分析系统时,经常需要制作弹出字典来进行复杂数据选择及批量带回等功能。下面介绍几种常用的弹出字典制作方法。

在制作弹出字典之前,需要一个字典报表,用于弹出页面中显示。

(1)首先制作一个基本WEB报表。

(2)在报表基本信息中,将报表应用类型设定为“字典报表”。

(3)在对应返回数据的报表数据列信息中,将显示类型设定为:单选框、复选框、带文本单选框或带文本复选框。复选框对应多选,多选后数据以逗号间隔。

1、普通弹出字典制作

普通弹出字典制作非常容易,只需要在相应的弹出字典URL中,按如下规则设定即可:dicURL=&&isSelOne=1。

注意:各参数间以&&分隔,因为在dicURL的值中会以&分隔。其中,dicURL一般是字典报表URL,如system.report.do?subSys=demo&repID=1 &isQuery=1&…。isSelOne是表示是否是单选,如果只有dicURL一项,则可以直接写字典报表URL即可,不需要写“dicURL=”。

2、显示字典描述的弹出字典制作

使用开发平台进行在线开发过程中,经常需要在文本框中直观的显示字典描述(如班级名称),但向服务器提交的是字典标识(班级标识)。这就需要制作一个显示字典描述的弹出字典。

(1)在制作字典报表时,在数据源中增加一计算列,如sel,然后在其对应的报表数据列信息的一次表达式中写上:repField("classid")+"::"+repField("classname")。其中classid, classname分别代表班级标识及班级名称对应的报表数据列标识,中间以双冒号间隔。也可以在显示表达式中写上repField("classname"),这样在报表显示时就只显示班级名称。将这一数据列的显示类型设定为“带文本单选框”或“带文本复选框”,而将classid及classname对应的两列隐藏不显示。这一步就是将返回数据构成 “标识::描述”的形式,其中标识是向服务器提交的数据,而描述是显示在文本框中的。

(2)将对应的文本框的显示类型设定为“非可编辑弹出字典”或“非可编辑多行弹出字典”。

3、批量带回的弹出字典制作

在使用开发平台过程中,可能遇到这样的需求:选择一个字典值后,将表单中其他多项的值同时带出。比如:在录入学生信息时,需要设定对应的班级,但要求将对应的班级名称及班主任也带回来显示在表单中,即设定了班级标识,需要同时设定表单中的班级名称及班主任两项数据。那就需要制作一个批量带回的弹出字典。

(1)在制作字典报表时,在数据源中增加一计算列,如sel,然后在其对应的报表数据列信息的一次表达式中写上:repField("classid")+";|;"+repField("classname")+";|;"+ repField("teacher"),以;|;间隔。可以在显示表达式中写上repField(classname),这样在报表显示时就只显示班级名称。将这一项的显示类型设定为“带文本单选框”或“带文本复选框”,而将classid、classname及teacher三项对应的两列隐藏不显示。注意,在一次表达式中,每项后也可以加“::描述值”到达显示字典描述的效果。

(2)在相应的弹出字典URL中通过appendElems来设定表单上的附加输入框的标签名,中间以|分隔,注意顺序要与报表数据列sel的一次表达式中的一致。如dicURL=system.report.do?subSys=demo&repID=1& isQuery=1&&appendElems=col_classname|col_teacher,其中,classname及teacher是表单中的元素名,就是需要附加设定的项。

4、关联弹出字典制作

使用开发平台过程中,也可能遇到这样的需求:在表单中,某元素设定弹出字典,但是需要页面中另一个元素的值作为弹出字典的条件来进行字典内数据过滤。如:录入成绩表单中,在选择学生的时候需要用表单中的班级的值作为学生弹出字典的过滤条件,弹出的学生字典中只有相应班级的学生。这时就需要制作关联弹出字典。

(1)在制作字典报表时,增加相应的条件,便于过滤,如增加CLASSID=?条件。

(2)在弹出字典URL中,这样设定system.report.do?subSys=demo&repID=1&isQuery=1&selCndID=classid&cnd_classid=[!=col_CLASSID!]&hideCndIDs=classid。其中[!=col_CLASSID!]是页面端的嵌入标签与服务器端的[%=exp%]写法不同,也可以写成[!=col_CLASSID 0!],加入“ 0”后就意味着CLASSID不能为空。col_CLASSID是当前表单中的元素名称,在处理字典URL时,自动从当前表单中取col_CLASSID的值进行置换,如果没有提供该项的值,则不作为过滤条件。

说明:在页面端嵌入标签中也可以含js函数,这样可以通过js来动态的给弹出字典URL赋条件值,如在更新模块中:在更新JSCSS资源中注册一个js函数,通过函数从表单中取值,并做相应的计算。然后在更新列扩展信息中的弹出URL的的页面端嵌入标签中写上这个js函数名即可,注意一定带括号。