润乾报表(V4)用ajax实现关联单元格自动填充
来源:互联网 发布:聚划算淘宝商城手表 编辑:程序博客网 时间:2024/06/05 16:22
填报表可能会遇到这样的需求,某个单元格值发生变化后,其他一些单元格值也跟着发生变化(局部刷新)。如果是简单的加减乘除运算,可以在单元格的自动计算里面实现;如果关联单元格显示的内容是从数据库中取出来的,就需要用ajax来异步取数加载了。
比如订单表,当选择产品后,产品的单价、库存自动填充,用户便可以根据这些信息填写订货量。
分析思路:
利用报表单元格的自动计算功能完成不同单元格信息的自动关联,自动计算表达式采用的是js函数,js函数中调用ajax,ajax中调用servlet查询数据库检索订单、库存量信息,返回给相应的单元格。
实现过程:
报表(如A3单元格)设置下拉数据集,用来选择产品,在B3单元格自动计算里面设置表达式“getValue("单价",A3)”(第一个参数是要查询的字段,第二个参数是关联的单元格,返回数据库中A3选择的产品对应的单价),C3单元格自动计算的表达式“getValue("库存量",A3)”,单元格D3设置为可写。
解析报表的jsp如下
<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/runqianReport4.tld" prefix="report" %>
<html>
<body>
<%request.setCharacterEncoding( "GBK" );%>
<report:html name="report1" reportFileName="testAjax.raq"/>
<script language="javascript">
var xmlHttp;
var result;
//初试化XMLHttpRequest对象
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}
}
function call(){
if (xmlHttp.readyState == 4){//响应内容解析完成,可以在客户端调用了
if (xmlHttp.status == 200){//http请求一切正常,对GET和POST请求的应答文档跟在后面
result = decodeURI(xmlHttp.responseText);
}}}
//根据关联单元格、字段名称返回该字段的值
function getValue(field, orderID){
createXMLHttpRequest();
var url="<%=request.getContextPath()%>/ajax_Servlet2?selectField=" + field +"&orderID=" + orderID;
xmlHttp.onreadystatechange = call;
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
return result;
}
</script>
</body>
</html>
Servlet如下:
public class AjaxServlet_2 extendsHttpServlet{
Connection conn ;
Statement stmt;
ResultSet rs;
public void doGet(HttpServletRequestrequest, HttpServletResponse response)
throws ServletException,IOException{
response.setCharacterEncoding("GBK");
Context ctx = Context.getInitCtx();
try {
conn =ctx.getConnectionFactory(ctx.getDefDataSourceName()).getConnection();
stmt = conn.createStatement();
} catch (Exceptione) {
e.printStackTrace();
}
String selectField = request.getParameter("selectField");
String orderID = request.getParameter("orderID");
if(!"".equals(selectField)|| selectField == null){
String selectSQL = "SELECT "+ selectField +"FROM 产品 where 产品ID="+ orderID;
try {
rs = stmt.executeQuery(selectSQL);
if(rs.next()){
PrintWriter out=response.getWriter();
out.write(URLEncoder.encode(rs.getString(selectField).trim(),"UTF-8"));
out.flush();
out.close();
}
} catch (SQLExceptione) {
e.printStackTrace();
}finally{
try {
if(stmt != null) stmt.close();
if(rs != null) rs.close();
if(conn != null) conn.close();
} catch (SQLExceptione) {
e.printStackTrace();
}
}
}
}
}
- 润乾报表(V4)用ajax实现关联单元格自动填充
- 润乾报表用ajax实现关联单元格自动填充
- 填报表用ajax实现关联单元格自动填充
- 填报表用ajax实现关联单元格自动填充
- 填报表用ajax实现关联单元格自动填充
- 填报表用ajax实现关联单元格自动填充 http://www.quiee.com.cn/archives/3883/
- 如何实现填报表不同单元格的自动关联填充
- 润乾报表v4-自动导入excel
- AJAX校验在润乾V4填报表中的使用
- 润乾报表v4-填报分页自动计算页数
- 润乾报表中html数据类型单元格内容自动扩展
- Input关联自动填充
- 润乾报表-单元格函数
- 用Jquery实现自动填充
- 润乾报表v4-导出xml文件
- 润乾报表如何实现行式报表新添加行单元格始终可写
- 润乾报表5普通填报表单元格实现数据二次筛选
- 润乾报表v4-怎样实现用存为本地的html离线填报到其他服务器
- KafkaConsumer is not safe for multi-threaded access
- JQuery事件
- iOS 退款(或订单)推送消息语音播报
- 算法 day 01
- 条形码控件Aspose.BarCode 12月新版17.12发布 | 附下载
- 润乾报表(V4)用ajax实现关联单元格自动填充
- 系统架构改进--多系统用户整合
- Spring事务管理只对出现运行期异常进行回滚
- java NIO Channel 学习总结
- fprintf用法解析
- Android 软键盘的显示和隐藏
- Linux与网络
- 远程连接MYSQL提示Host is not allowed to connect to this MySQL server
- 漫画:什么是单例模式?(整合版)