表格-远程数据源操作

1.样例说明

通常表格使用的查询数据源都是本地的Query方式。本例演示了查询的数据源是远程数据源时的操作方式。当查询数据源是本地的Query方式时,必须设置datatype:”json”,同时要设置url属性,比如:url:”/waf2help/getInvData.do”。当查询的数据源是远程数据源时,需要在显示表格的高级选项中绑定事件,并在后台生成的Handler中实现数据的查询、显示、分页等功能。

2.样例配置

2.1数据源如下图所示:
远程数据源操作

2.2分页设置如下图所示:
远程数据源操作

2.3事件绑定如下图所示:
远程数据源操作

3.关键代码

package com.kingdee.eas.custom;

import java.sql.Connection;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.kingdee.bos.BOSException;
import com.kingdee.bos.Context;
import com.kingdee.bos.eventbus.event.action.KDActionEvent;
import com.kingdee.bos.webframework.exception.WafException;
import com.kingdee.bos.webframework.json.GridDataEntity;
import com.kingdee.bos.webframework.util.db.DBConnectionMgr;
import com.kingdee.bos.webframework.context.WafContext;
import com.kingdee.bos.webframework.dynamic.handler.AbstractWebEventHandler;
import com.kingdee.bos.eventbus.event.action.IActionEventHandler;
import com.kingdee.eas.util.app.DbUtil;
import com.kingdee.jdbc.rowset.IRowSet;
import java.sql.*;

public class GetDateWithoutQueryHandler extends AbstractWebEventHandler implements IActionEventHandler {
	
	public void onAction(KDActionEvent event) throws WafException,BOSException {
		// 分页实体类
		GridDataEntity entity = new GridDataEntity();
		List<Object> list = new ArrayList<Object>();
		// 获取上下文
		Context context = WafContext.getInstance().getContext();
		// 获取页面的page和rows参数并转换成int值
		String pagenum = event.getReqeustContext().getHttpServletRequest().getParameter("page");
		String rowsnum = event.getReqeustContext().getHttpServletRequest().getParameter("rows");
		int page = Integer.valueOf(pagenum).intValue();
		int rows = Integer.valueOf(rowsnum).intValue();		
		// 查询国家表
		String sql = "select * from T_BD_Country order by fnumber desc";
		// 查询国家表中数据的数量
		String sql1 = "select count(*) as total from T_BD_Country";
		// 执行sql1语句
		IRowSet rs = DbUtil.executeQuery(context,sql1);
		// 获取sql1语句的total字段
		int count = 0;
		try {
			while(rs.next()){
				count = rs.getInt("TOTAL");
			}
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		// 起始记录数
		int begin = (page-1)*5;
		// 执行sql语句,四个参数依次为context:上下文,sql:sql语句, begin:起始记录数,rows:每页显示记录数
		IRowSet rowSet = DbUtil.executeQuery(context,sql,begin,rows);
		//将数据存放到map容器中
		try {
			while(rowSet.next()){
				Map aMap = new HashMap<String,String>();
				aMap.put("fid", rowSet.getString("fid"));
				aMap.put("fname_l2", rowSet.getString("fname_l2"));
				aMap.put("fnumber", rowSet.getString("fnumber"));
				list.add(aMap);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		// 总记录数
		entity.setRecords(count);
		// 总页数
		entity.setTotal((int) Math.ceil((double) count / 5 ));
		// 封装每一行的数据
		entity.setRows(list);
		// 页数
		entity.setPage(page);
		// 将数据转换成json格式
		event.setJsonResult(entity);	
	}
	
}

4.样例演示

1.配置页面

2.预览页面

相关样例