历史版本11 :JS实现填报校验后返回错误信息 返回文档
编辑时间:
内容长度:图片数:目录数:
修改原因:
1. 问题描述编辑
在提交校验中介绍了数据校验规则编写,如果校验成功就可以提交入库,校验不成功则提示错误信息,如果用户不想使用FineReport内置的左上角的校验提示,希望能够以弹出框的形式提示错误信息,并且根据错误信息决定下一步的操作,那这个该如何实现呢?
2. 解决方案编辑
从7.0.5往后的版本中开放了校验后事件的返回参数fr_verifyinfo,此参数包含校验返回的信息,为一个对象,该对象包含两个属性:
fr_verifyinfo.success
返回true/false,表示是否校验成功;fr_verifyinfo.info
返回具体的错误提示信息,为一个数组对象,比如A12单元格的错误和B13单元格的错误等等。3.返回单个报错编辑
以%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\VerifyForm\SubmitVerify.cpt模板为例,如果成本价的值小于0,则刷新整个页面,如果成本价的值大于1000,提示是否提交,选择确定,则强制提交并刷新页面,选择取消,则不做任何操作。
3.1 模板准备
打开模板,修改SQL语句:SELECT * FROM 产品 limit 1。
点击模板>报表填报属性>数据校验,修改内置校验规则,如下图:

当F3单元格值小于等于0的时候,就提示错误信息“0”,如果F3单元格值大于等于1000的时候,就提示错误信息“1”。
3.2 添加校验后事件
点击模板>模板web属性>填报页面设置,选择
,添加 事件,如下图:
在解决方案中提到,填报校验后事件返回参数为fr_verifyinfo,该参数包括两个属性,fr_verifyinfo.success和fr_verifyinfo.info。
fr_verifyinfo.success返回两个值,true和false,如果返回true则表示校验成功,如果返回false表示校验失败,可用fr_verifyinfo.info获取校验后的提示信息,校验失败该参数则包含错误的提示信息,
如下图,在校验后事件中添加如代码:
if(fr_verifyinfo.success){
alert("校验成功");
}else {
if(fr_verifyinfo.info=="F3:0")
{
alert("成本价小于0!!!");
location.reload();
return false;
}
else
{
FR.Msg.confirm("警告","成本价大于1000,确认要提交吗?",function(result){
if(result){
contentPane.writeReport();
location.reload();
}
})
return false;
}
}
注:contentPane.writeReport();表示强制提交,即不论校验是否成功都提交。
3.3 效果查看
F3单元格,也就是成本价对应单元格值填写0~1000之间的数值,如下图:

成本价填报小于0 的值,如下图:

点击确定后则刷新页面。
成本价填报大于1000的值,如下图:

已完成模板请参照%FR_HOME%\WebReport\WEN-INF\reportlets\doc\Form\VerifyForm\JsSubmitVerify.cpt
4.返回多个报错编辑
如果返回的报错信息可能有多个,就需要对fr_verifyinfo.info里的对象做遍历处理。
以%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\VerifyForm\SubmitVerify.cpt模板为例,如果成本价的值小于0,则提示F3单元格校验出错,如果单价的值小于0,则提示G3单元格校验出错。

当F3单元格值小于等于0的时候,就提示错误信息“0”,如果G3单元格值小于0的时候,就提示错误信息“1”。


已完成模板请参照%FR_HOME%\WebReport\WEN-INF\reportlets\doc\Form\VerifyForm\JsMulitVerify.cpt
以%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Form\VerifyForm\SubmitVerify.cpt模板为例,如果成本价的值小于0,则提示F3单元格校验出错,如果单价的值小于0,则提示G3单元格校验出错。
4.1模板准备
打开模板,修改SQL语句:SELECT * FROM 产品 limit 1。
点击模板>报表填报属性>数据校验,修改内置校验规则,如下图:

当F3单元格值小于等于0的时候,就提示错误信息“0”,如果G3单元格值小于0的时候,就提示错误信息“1”。
4.2添加校验事件
点击模板>模板web属性>填报页面设置,选择
,添加 事件,如下图:
if(fr_verifyinfo.success){
alert("校验成功");
}else {
for(var i = 0; i < fr_verifyinfo.info.length;i++){
if(fr_verifyinfo.info[i]=="F3:0")
{
//alert(fr_verifyinfo.info[i]);
alert("F3单元格校验出错");
}
else if(fr_verifyinfo.info[i]=="G3:1")
{
//alert(fr_verifyinfo.info[i]);
alert("G3单元格校验出错");
}
}
}
4.3效果查看

已完成模板请参照%FR_HOME%\WebReport\WEN-INF\reportlets\doc\Form\VerifyForm\JsMulitVerify.cpt