报表单元格中定义JS函数及使用

集深报表中,Javascript函数都用在哪些地方?

1. 填报表中的校验规则

2. 填报表中的自动计算

3. 填报表中的自定义输入控件

4. 单元格中的超链接

5. 页面中的集深内置Javascript函数

6. 个性化的页面处理需求

校验

在填报表中,经常需要对页面填报的数据进行校验,来保证入库的数据都是符合规则且正确的.在校验规则中我们规定使用Javascript规则来对数据进行校验.

例如,我们有一张填报表:

 

我们在填报的时候需要对运货费进行校验,那么给运货费单元格的填报属性中加入校验规则:

 

在添加自定义校验表达式时,如果勾选“是否立即校验”复选框,表示报表在填报数据时,当鼠标移开当前单元格时就进行合法性检查,否则,在点击提交按钮时才进行合法性检查。

在页面中,我们可以看到在运费里输入一个大于1000的数据,如1200,则系统会弹出javascript提示框,提示用户输入正确的数据:

 

一般来说,写在可扩展单元格中的校验,会随着单元格的扩展而被复制,写在不可扩展单元格,则不会被复制。

需要注意的是:

· 在合法性检查公式中,可以直接通过单元格的名称来引用单元格的值,如A1,A2等。

· 如果随着单元格的扩展,合法性检查属性要被复制到每一行每一列,且被引用的单元格也跟着动态变化,那么该单元格要加上${},表示动态引用,例如${A1},${A2}等等。

· 若是行式报表则不需要加${},直接写A1,A2即可。 

自动计算

自动计算,说白了就是计算列或者计算字段,即填报的时候,用户录入了某些数据后,系统会自动算出另外一部分单元格的值,由此简化用户的输入,减少错误率。

由于自动计算大部分时候是在网页上响应的,即用户在网页上录入数据时触发另外一些单元格自动计算,因此自动计算表达式采用的是javascript表达式或者函数,但是可以引用单元格的值。

例如我们现在有个填报表要做自动计算:

 

其中如何做到年龄单元格要根据出生日期自动计算出来呢?

在年龄单元格的填报属性中增加自动计算:

首先定义JS函数

 

其中自动计算的含义是取到当前年减去出生年份得到.其中substr和getFullYear都是Js函数.用来处理字符串和年份.

然后定义自动计算表达式

 

这样在页面中就可以看到自动计算出来的年龄:

 

自定义输入控件

在填报表录入数据或者参数表单输入参数的单元格中,由于特殊需求,需要使用集深没有提供的JS输入控件,那么就可以在报表系统中使用自定义的输入控件。 它的适用范围为:

1. 在填报表中:适用于数据类型为文本、可写的单元格;

2. 在参数表单中:适用于对应参数变量的单元格。

假如我们现在要定义一个新的自定义控件,那么如何做呢?

首先在需要显示自定义控件的单元格的填报属性中的编辑风格选择自定义:

 

然后点击设置:

 

输入显示自定义控件的JS函数和隐藏自定义控件的JS函数,编辑完成后点击【确定】按钮即可。

超链接 

集深报表提供了为单元格设置超链接属性的功能。集深报表提供的超链接可分为常规超链接、超链接中引用单元格的值,超链接中触发js函数三种类型。这里介绍如何在超链接中使用js函数。下面给出一个简单的例子。

首先,新建一个报表,在E1中添加文字:触发js函数,为了看起来明显,设置字体颜色为蓝色,并为字体加上下划线,设置E1 超链接 属性的值为:javascript:tips()。其中tips()为待触发的js函数,如下图

 

 然后,在发布报表的页面上,编写js函数tips()如下

<script launguage=”javascript”>
function tips(){
alert(”被超链接触发的js弹出提示框!”);
}
</script>

或者,可以直接在该单元格的超链接属性的表达式中写javascript函数,如下图

 

 此时就不用在发布报表的jsp页面上编写js函数了。

最后,发布报表,当点击报表E1中文字 :触发js函数,就会执行js函数,弹出提示框,如下图

 

 这样就实现了在超链接中触发js函数。

注意:集深报表中提供利用单元格的超链接属性触发js函数的接口,至于使用什么样的js函数,需要用户根据需要自己定义。例如,用户可以编写一个js函数,完成弹出新窗口展现报表的功能,函数举例如下

//在弹出新窗口中展现报表,并向该页面传递参数id的值
function show_product(id){
var strurl=’./chaolianjie.jsp?raq=test.raq&arg1=’+id;
window.open(strurl,”_blank”,” Width=650 ,Height=500,top=100,left=100″);
}

然后在报表触发单元格里写入如下超链接表达式,把A1的真实值传递到新窗口打开的报表展现页面。

 

 

 

集深内置Javascript函数

报表里提供了基本的功能函数,方便页面中直接调用或者进行封装,组合来完成一些复杂的业务逻辑.

基本功能函数有:

_save() //保存

_submitTable() //提交

_submitReport() //提交

_getCurrPage() //当前页

_getTotalPage() //总页数

_getTotalPage()//翻到最后一页

_toPage( ) //翻页

高级功能函数有:

_print() //打印

_saveAsExcel() //导出excel

_saveAsWord() //导出word

_saveAsPdf() //导出pdf

_saveAsText () //导出text

通用函数:

switchCase

这些函数直接可以在jsp页面中使用,用报表的标签中的name调用.例如report_print()

个性化的页面处理需求

报表中的内置功能有些时候并不能完全满足客户的需要,这就需要客户根据自己的业务逻辑来编写一些代码来丰富整个应用.这其中以Javascript函数的需求最为普遍.

例如,折叠报表.

有些时候报表的数据分为多个层级,每个层级的数据很多.客户想在最开始展现的时候,只显示第一个层级,然后通过点击父级来展开子级.这就需要设计一个类似树形结构的报表.