转自:http://blog.donews.com/finereport/archive/2010/09/14/1583608.aspx
 
在使用Java[url=http://www.finereport.com/products/advantages]报表工具[/url]实现填报时,有时需要在编辑完数据后跟其他具体某个格子对比,进行及时校验。当报表中提供的及时校验不能满足需求时,可以通过JS事件来进行及时校验。

以FineReport为例,介绍下如何用[url=http://www.finereport.com/products/advantages]Java报表[/url]工具内置JS及时校验-跨格数据校验

1.    设计模板
2.1    打开[url=http://www.finereport.com/products]报表工具[/url],新建报表
2.2     模板设计,如下图所示 
[img]http://www.finereport.com/forumimages/e206.png[/img] 

2.3     控件设置
[img]http://www.finereport.com/forumimages/e207.png[/img]

2.4     添加事件
    对B2单元格控件添加编辑结束事件:
var D2value = arguments[1].getCellValue("D2");
if (this.getValue() < D2value){ 
FR.Msg.alert(FR.i18n.Alert, "该值不能小于" + D2value);  
return false;
}
说明:D2value是自定义变量,用于获得D2单元格的值,if语句是用来判断该单元格输入后的值是否小于D2value,如果是则弹出警告:该值不能小于6。
[img]http://www.finereport.com/forumimages/e208.png[/img]

&#61548;    对B3单元格控件添加编辑结束事件:
var D3value = arguments[1].getCellValue("D3");
if (this.getValue() != D3value){     
FR.Msg.alert(FR.i18n.Alert, "该值应等于" + D3value);
return false;
}
说明:D3value是自定义变量,用于获得D3单元格的值,if语句是用来判断该单元格输入后的值是否等于D3value,如果不是是则弹出警告:该值应等于abc。
 
[img]http://www.finereport.com/forumimages/e209.png[/img]

2.    保存并预览
点击填报预览,在B2单元格中输入数字5,并按回车确定,则弹出警告,如图
 
[img]http://www.finereport.com/forumimages/e210.png[/img]
在B3单元格中输入add,并按回车确定,也弹出校验警告,如图
 
[img]http://www.finereport.com/forumimages/e211.png[/img]