通常表格使用的查询数据源都是本地的Query方式。本例演示了查询的数据源是远程数据源时的操作方式。当查询数据源是本地的Query方式时,必须设置datatype:”json”,同时要设置url属性,比如:url:”/waf2help/getInvData.do”。当查询的数据源是远程数据源时,需要在显示表格的高级选项中绑定事件,并在后台生成的Handler中实现数据的查询、显示、分页等功能。
2.1数据源如下图所示:
2.2分页设置如下图所示:
2.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);
}
}
1.配置页面
2.预览页面