填报表往往需要在客户端页面输入时进行合法性检查,如检查输入是否为数字或符合规定的格式等。润乾报表填报表通过两种方式实现合法性检查:
第一种,通过设置单元格的填报数据类型自动实现合法性检查。
第二种,通过设置单元格校验属性,编辑校验表达式进行校验。比如:要求H3单元格里填写的数据在3000到10000之间,则可设单元格校验表达式为:H3>=3000&& H3<=10000。
如例3.1.sht中,H3单元格的数据类型缺省为自动检测,数据库中工资的字段类型为数值型,如果在工资列输入一个字符串,那么在提交填报结果时控制台会出现错误信息。填报输入数据不符合要求时,在提交报表时系统自动进行校验。
还可以手动设置H3单元格的数据类型为数值型,如果在工资列输入一个字符串,焦点离开时会立即校验。
如下图所示,设置H3数据类型为数值型后,焦点离开会立即校验:
添加单元格校验
合法性检查属性的表达式规则遵从javascript的语法规则,所以在校验表达式中可以是一个javascript表达式,也可以调用一个函数。
例如我们要对例3.1.sht中增加工资的校验,工资的数据在3000到10000元之间,则选中H3单元格,单击主菜单中的【填报】à【单元格校验】,打开单元格校验对话框,在校验中增加一条校验表达式,如下图所示:
H3单元格设置了【单元格校验】后,会在左下角出现一个红色小三角。如下图所示:
发布报表后,在工资列输入一个大于10000的数据时,如12000,系统会弹出javascript提示框,提示用户输入的数据有误,如下图所示:
自定义单元格校验样式
目前系统默认的标注样式是将相关单元格的背景色设为红色。如果用户想换用别的标注方式,则可以在jsp中通过实现js函数接口来实现,接口定义如下:
function markInvalidCellUser( cell, addMark ) {
//此处可添加用户程序代码
//参数说明:
//cell 表示需要标注的单元格对象
//addMark 数据类型为bool型,true表示要添加标注,false表示要清除标注
}
举例:
如需将单元格校验的相关单元格背景色设为蓝色,可在展现填报表的jsp中添加如下脚本:
function markInvalidCellUser( cell, addMark ) {
//以下内容为用户自定义添加的程序代码
var oldbk = cell.getAttribute( "oldbk" ); //oldbk用于记录单元格原来的背景色
if( addMark ) { //添加标记
if( oldbk != null ) return; //标记过的,不用再标记了
cell.setAttribute( "oldbk", cell.style.backgroundColor );
cell.style.backgroundColor = "blue"; //设置单元格背景色为蓝色
var table = _lookupTable( cell ); //找到当前编辑的单元格所在的table
if( table.currEditor != null && table.currEditor.editingCell == cell ) { //cell是当前编辑单元格
_setEditorStyle( table.currEditor, cell ); //将修改后的单元格样式设置到当前编辑器里
}
}
else { //清除标记
if( oldbk != null ) { //判断是否有标记过
cell.style.backgroundColor = oldbk;
cell.removeAttribute( "oldbk" );
}
}
}