另一种填报校验方式
报表中常规校验结果以弹出窗口的方式显示,这样的提醒比较单一,下面介绍一种通过结合js函数实现的可用性更强的校验方法。
效果如下:
对于不同输入对象的数值控制校验动作,下图中只校验资产负债率的输入数值,其它输入格子不做校验。
以资产负债率后面的格子中输入大于0的数值为正确规则,输入数值时正常显示;
当输入非法数值时将输入格子的字体颜色更改为红色,单元格背景色更改为绿色,如下图所示:
实现过程如下:
1 定义校验js函数
function check(cellName,arg2)
{
if(cellName==”资产负债率“)
{
if(arg2>0)
{
report1.currCell.style.backgroundColor=’#ffffff’;
report1.currCell.style.color=’black’;
map.remove(cellName);
}
else
{
report1.currCell.style.backgroundColor=’#00FF00′;
report1.currCell.style.color=’red’;
map.put(cellName,1);
}
}
return true;
}
2 在报表单元格校验中定义:
3 定义map对象保留校验结果。(该方式可选)
var map = new Map();
map对象的定义见附件源码。
4 定义页面上的提交函数。
function submitdata()
{
if(map.size()==0)
_submitTable( report1 );
else
alert(“存在不符校验规则数据!“);
}
注意:
1 该方法现只用于普通填报表,行式填报表还没有调通。
2 可以替代报表上的非即时校验,效果更好。
附件:
Jsp源码:
<%@ page contentType=”text/html;charset=GBK” %>
<%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %>
<%@ page import=”java.io.*”%>
<%@ page import=”java.util.*”%>
<%@ page import=”com.runqian.report4.usermodel.Context”%>
<script LANGUAGE=’JavaScript’>
function struct(key, value) {
this.key = key;
this.value = value;
}
function put(key, value){
for (var i = 0; i < this.arr.length; i++) {
if ( this.arr[i].key === key ) {
this.arr[i].value = value;
return;
this.arr[this.arr.length] = new struct(key, value);
}
function get(key) {
for (var i = 0; i < this.arr.length; i++) {
if ( this.arr[i].key === key ) {
return this.arr[i].value;
return null;
}
function remove(key) {
var v;
for (var i = 0; i < this.arr.length; i++) {
v = this.arr.pop();
if ( v.key === key ) {
continue;
this.arr.unshift(v);
}
function size() {
return this.arr.length;
}
function isEmpty() {
return this.arr.length <= 0;
}
function Map() {
this.arr = new Array();
this.get = get;
this.put = put;
this.remove = remove;
this.size = size;
this.isEmpty = isEmpty;
this.sort = sort;
}
function sort() {
}
</script>
<html>
<body leftMargin=0 top =0 rigtMargin=0 bottonMargin=0>
<report:html name=”report1″ reportFileName=”jiaoyan.raq”
funcBarLocation=”"
needPageMark=”yes”
/>
<INPUT TYPE=”button” VALUE=”提交” ONCLICK=”submitdata()”>
<SCRIPT LANGUAGE=’JavaScript’>
var map = new Map();
function _bindingEditor( cell ) {
var table = _lookupTable( cell );
if( ! _submitEditor( table ) ) return;
var editor = _lookupEditor( table, cell );
table.currEditor = editor;
_setRowColBackColor( cell );
_setEditorStyle( editor, cell );
}
function check(cellName,arg2)
{
if(cellName==”资产负债率“)
{
if(arg2>0)
{
report1.currCell.style.backgroundColor=’#ffffff’;
report1.currCell.style.color=’black’;
map.remove(cellName);
}
else
{
report1.currCell.style.backgroundColor=’#00FF00′;
report1.currCell.style.color=’red’;
map.put(cellName,1);
}
}
return true;
}
function submitdata()
{
if(map.size()==0)
_submitTable( report1 );
else
alert(“存在不符校验规则数据!“);
}
</SCRIPT>
</body>
</html>