报表数据的AJAX校验

有一个需求是需要对报表中的填报数据进行校验,需要检验比对的条件是通过扩展结构展现的,无法用普通的js校验来实现这个需求,故想到可以利用ajax直接从数据库中取的需要比对校验的数据。

首先报表与展现效果如图

http://my.csdn.net/uploads/201208/15/1345028547_9833.jpg

发布后的效果为

http://my.csdn.net/uploads/201208/15/1345028605_4047.jpg

校验的内容就是要求所填数据与规定价比较,同品号、同油品标准的,要大于规定价-1且小于规定价。

在填报单元格的校验中定义一个方法doCheck(${A1}.toString(),${C10}.toString(),${D9}.toString(),${D10}.toString()),不同的单元格对应着不同的值。

jsp中写入这样一段代码

<!-引入ajaxjs文件>
<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,因为上面的代码中ajaxsend_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(“
参数错误“);
}


%>

这样在填报时便会出现对应的校验信息,效果如下

http://my.csdn.net/uploads/201208/15/1345029259_6664.jpg