合法性检查

阅读(7436) 标签: 数据类型, 单元格校验,

填报表往往需要在客户端页面输入时进行合法性检查,如检查输入是否为数字或符合规定的格式等。润乾报表填报表通过两种方式实现合法性检查:

第一种,通过设置单元格的填报数据类型自动实现合法性检查。

第二种,通过设置单元格校验属性,编辑校验表达式进行校验。比如:要求H3单元格里填写的数据在300010000之间,则可设单元格校验表达式为:H3>=3000&& H3<=10000

数据类型校验

如例3.1.sht中,H3单元格的数据类型缺省为自动检测,数据库中工资的字段类型为数值型,如果在工资列输入一个字符串,那么在提交填报结果时控制台会出现错误信息。填报输入数据不符合要求时,在提交报表时系统自动进行校验。

还可以手动设置H3单元格的数据类型为数值型,如果在工资列输入一个字符串,焦点离开时会立即校验。

如下图所示,设置H3数据类型为数值型后,焦点离开会立即校验:

 

单元格校验

添加单元格校验

合法性检查属性的表达式规则遵从javascript的语法规则,所以在校验表达式中可以是一个javascript表达式,也可以调用一个函数。

例如我们要对例3.1.sht中增加工资的校验,工资的数据在300010000元之间,则选中H3单元格,单击主菜单中的【填报】à【单元格校验】,打开单元格校验对话框,在校验中增加一条校验表达式,如下图所示:

wps6385.tmp 

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" );

}

}

}