报表数据的AJAX校验
有一个需求是需要对报表中的填报数据进行校验,需要检验比对的条件是通过扩展结构展现的,无法用普通的js校验来实现这个需求,故想到可以利用ajax直接从数据库中取的需要比对校验的数据。
首先报表与展现效果如图
发布后的效果为
校验的内容就是要求所填数据与规定价比较,同品号、同油品标准的,要大于规定价-1且小于规定价。
在填报单元格的校验中定义一个方法doCheck(${A1}.toString(),${C10}.toString(),${D9}.toString(),${D10}.toString()),不同的单元格对应着不同的值。
在jsp中写入这样一段代码
<!-引入ajax的js文件>
<script type=”text/javascript” language=”javascript” src=”../ajax_func.js”></script>
<script type=”text/javascript” language=”javascript”>
function doCheck(jiaquid,oilstandard,pin,value) {
var f = document.forms[0];
if (value != “”) {
document.getElementById(“report1_F7″).innerHTML=”系统正在处理您的请求,请稍候…”
//确定发送请求的方式和请求页面的URL及参数
send_request(“GET”,”test.jsp?value=”+value+”&oilstandard=”+oilstandard+”&pin=”+pin+”&jiaquid=”+jiaquid, null, “text”, showFeedbackInfo);
else {
return true;
return true;
// 处理返回信息的函数
function showFeedbackInfo() {
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
//在报表的B10单元格中显示返回的信息
document.getElementById(“report1_F7″).innerHTML = http_request.responseText;
else {//请求页面不正常
alert(“您所请求的页面有异常!“);
</script>
然后在新建一个test.jsp,因为上面的代码中ajax的send_request方法会调用它,里面的代码为
<%@ page contentType=”text/html;charset=GBK” %>
<%@ page import=”java.io.*”%>
<%@ page import=”java.util.*”%>
<%@ page import=”java.sql.*”%>
<%@ page import=”com.runqian.report4.usermodel.Context”%>
<%
String oilstandard = request.getParameter(“oilstandard”);
String pin = request.getParameter(“pin”);
String value = request.getParameter(“value”);
String jiaquid = request.getParameter(“jiaquid”);
if (!oilstandard.equals(“”)) {
Connection con = null;
try{
Driver driver = (Driver) Class.forName(“com.mysql.jdbc.Driver”).newInstance();
DriverManager.registerDriver(driver);
con= DriverManager.getConnection(“jdbc:mysql://localhost:3306/zhongyoudemo”,”root”,”123456″);
String sql = “SELECT sys_guidingjia.RetailLiterPrice FROM sys_guidingjia WHERE sys_guidingjia.PIN=’”+pin+”‘ and sys_guidingjia.OilStandard=’”+oilstandard+”‘ and
sys_guidingjia.JiaQuID = ‘”+jiaquid+”‘”;
System.out.println(sql);
ResultSet rs=con.createStatement().executeQuery(sql);
Double a = Double.parseDouble(value);
double b=0;
if(rs.next()){
b=rs.getDouble(1);
double result = a – b;
if (result>=0 || result<=-1) {
out.print(“大于规定价-1,小于规定价“);
else{ out.print(“数据合格“); }
}catch (Exception e){
e.printStackTrace(); }
else {
out.println(“参数错误“);
}
%>
这样在填报时便会出现对应的校验信息,效果如下