前台js,给table绑定分页控件:
$(function(){
// 设置分页控件
$('#odsExternalConfigGrid').datagrid('getPager').pagination({
pageSize : 15,// 每页显示的记录条数,默认为15
pageList : [ 15, 20, 30, 40, 50 ],// 可以设置每页记录条数的列表
beforePageText : '第',// 页数文本框前显示的汉字
afterPageText : '页 共 {pages} 页',
displayMsg : '当前显示 {from} - {to} 条记录 共 {total} 条记录',
onSelectPage : function(pageNumber, pageSize) {
$("#page_size").attr("value", pageSize);
$(this).pagination('loading');
search(pageNumber, pageSize);//切换页数后调用后台查询
$(this).pagination('loaded');
},
onBeforeRefresh : function(pageNumber, pageSize) {
$(this).pagination('loading');
},
onRefresh : function() {
$(this).pagination('loaded');
}
});
});
调用后台查询数据结果:
function loadTestData(pageNumber, pageSize){
var provCodeId = $("#provCodeId").combobox('getValue');
var tableCodeId = $("#tableCodeId").combobox('getValue');
$.ajax({
type:"post",
url:"sExtlConfig!findOdternalCfgList.action",
async:false,
dataType : "json",
data:{tableCodeId:tableCodeId,systemCodeId:systemCodeId,page:pageNumber,rows:pageSize},
cache:false,
success:function(data,status){
var json = eval("(" + data + ")");
if (json.total <= 0) {
$('#odsExternalConfigGrid').datagrid('loadData',{total: 0, rows: [] });
$.messager.alert('系统提示', '没有查询数据!', 'info');
}
$('#odsExternalConfigGrid').datagrid('loadData', json);//json 是后台返回的json字符串包含total和rows,如果这样用的话,后台必须是total //和rows这两个参数
// 修改当前页文本框值var pageNumber1 = $('#odsExternalConfigGrid').datagrid('getPager').pagination('options').pageNumber;if (pageNumber == 1 && pageNumber1 != 1) {$('#odsExternalConfigGrid').datagrid('getPager').pagination('options').pageNumber = 1;$('#odsExternalConfigGrid').datagrid('getPager').pagination('refresh');}}});}//$('#odsExternalConfigGrid').datagrid('loadData', json.rows);//这样用的话,对应后台的rows也可以改为其他名字,比如rowss,对应前台的 //json.rows改为json.rowss
后台操作需要返回当前查看页的数据集合,和 满足查询条件的不分页情况下的记录总数.
Action层:
public String findOdternalCfgList(){
try {
String provCode = this.getRequest().getParameter("provCodeId");
String tableCode = this.getRequest().getParameter("tableCodeId");
String systemCode = this.getRequest().getParameter("systemCodeId");
String pageStr = this.getRequest().getParameter("page");
int page = (pageStr == null || "".equals(pageStr)) ? Constant.FIRST_RESULT
: Integer.parseInt(pageStr);
String rowStr = this.getRequest().getParameter("rows");
int row = (rowStr == null || "".equals(rowStr)) ? Constant.PAGE_SIZE
: Integer.parseInt(rowStr);
List<Map<String, Object>> inputList = odsExternalConfigService.findOdsExtelCfgList(provCode, tableCode, systemCode,page,row);
long total = odsExternalConfigService.findOdsExternalCfgList(provCode, tableCode, systemCode);
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("total", total);
resultMap.put("rows", inputList);
Gson gson = new Gson();
resultList = gson.toJson(resultMap).toString();
} catch (Exception e) {
e.printStackTrace();
}
return "resultList";
}
DAO层:
//返回指定页数的记录集合
@SuppressWarnings("unchecked")
@Override
public List<Map<String, Object>> findOdsExternalCfgList(String hql,
int page, int row) {
//如下查询返回的结果是:[{id=T123445,name=abc}, {id=T3445,name=bc}] 形式的键值对集合
Query query=getSession().createSQLQuery(hql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
query.setFirstResult(page);
query.setMaxResults(row);
List<Map<String, Object>> tempList = query.list();
return tempList;
}
//返回总记录数
@Override
public long findOdsExternalCfgList(String provCode, String tableCode,
String systemCode) {
StringBuffer sb = new StringBuffer();
sb.append("select count(*) from OdsExternalConfig oec, MetaObjectTable mot where oec.tableId = mot.id ");
if(!StringUtil.isNull(provCode)){
sb.append("and provCode = '"+ provCode +"'");
}
if(!StringUtil.isNull(tableCode)){
sb.append("and tableId like '%"+ tableCode +"%'");
}
if(!StringUtil.isNull(systemCode)){
sb.append("and systemId = '"+ systemCode +"'");
}
Session session = this.getSession();
Query query = session.createQuery(sb.toString());
long total = (Long)query.uniqueResult();
return total;
}