在制作数据表格的时候有一个这样的属性, pagination是否显示分页列表, 分页显示的时候需要分别从数据库中取数据, 每页显示几行, 即只从数据库取出几行数据来显示, 具体代码如下

1, 显示页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>数据表格</title>
<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
<link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.4/themes/default/easyui.css"></link>
<link rel="stylesheet" type="text/css" href="jquery-easyui-1.4.4/themes/icon.css"></link>
<script type="text/javascript" src="jquery-easyui-1.4.4/jquery.easyui.min.js"></script>
<script type="text/javascript" src="jquery-easyui-1.4.4/locale/easyui-lang-zh_CN.js"></script> <script>
$(function() {
$("#tab1").datagrid({
title:"地区列表二",
url:"MembersList?parentid=90",
idField:"id", //指明哪个字段是标识字段
singleSelect:false, //指定是否只可以单选
frozenColumns:[[{field:"",title:"",checkbox:true},{field:"id",width:80,title:"ID"}]], //冻结某一列不随滚动条滚动
columns:[[
{field:"parentId",width:80,title:"parentId"},
{field:"name",width:80,title:"name"},
{field:"postCode",width:80,title:"postCode"}
]],
collapsible:true, //是否折叠
width:500, //整个表宽
fitColumns:true, //是否适应表的宽度
striped:true, //斑马线
rownumbers:true, //每一列的序列号
pagination:true, //是否出现分页工具栏
pageNumber:3, //打开页面首先显示哪一页
pageSize:10, //页面打开时显示的每页显示的数据条数
pageList:[10,20,30,40,50], //分页列表选项, 按每页显示多少内容
sortName:"id", //按哪一列进行排序
sortOrder:"asc", //定义是顺序排列还是倒序
remoteSort:false, //取消从服务器排序, 如果要让数据这这里排序这个属性必须设置为false
loadMsg:"正在加载啊......"
});
});
</script>
</head>
<body>
<br>
<table id="tab1">
</table>
</body>
</html>

2, Servlet控制层

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
String pagenum = request.getParameter("page");
String rows = request.getParameter("rows");
int ipagenum = Integer.parseInt(pagenum);
int irows = Integer.parseInt(rows);
String str1 = "";
try {
MemberDal m = new MemberDal();
ArrayList<Memberclass> array = m.getList(ipagenum,irows); //返回所显示数据的方法
if(array!=null) {int x = m.getCount(); //取出返回几行数据的方法
str1 = "{\"total\":"+x+",\"rows\":" + JSON.toJSONString(array) + "}";
}
}
catch (Exception e) {
}
response.getWriter().append(str1);
}

3, 类方法体

    public ArrayList<Memberclass> getList(int page,int rows) throws Exception {
ArrayList<Memberclass> rst = null;
Connection con = Dbhelper.getConnection();
PreparedStatement p = null;
ResultSet rs = null;
if(con!=null) {
try {
int maxrows = page * rows;
//oracle查询语句
String sql = "select * from (select t.*, rownum as rnum from member t where ROWNUM <= ?) where rnum > ?";
p = con.prepareStatement(sql);
p.setInt(1, maxrows);
p.setInt(2, maxrows-rows); //只固定的取出rows行数据, maxrows-rows在数据库中代表的都是行号,是第几行, 并不是取出几行数据, 理解了这一点就简单了
rs = p.executeQuery();
rst = new ArrayList<Memberclass>();
if(rs!=null) {
while(rs.next()) {
Memberclass place = new Memberclass();
place.setId(rs.getInt("id"));
place.setParentId(rs.getInt("parentid"));
place.setName(rs.getString("name"));
place.setPostCode(rs.getString("postcode"));
rst.add(place);
}
}
}
catch(Exception e) {
System.out.println(e);
}
finally {
try {
p.close();
}
catch(Exception e1) {
System.out.println(e1);
}
finally {
try {
con.close();
}
catch(Exception e2) { }
finally {
rs.close();
}
}
}
}
return rst;
} public int getCount() throws Exception{
int rtn = 0;
Connection conn = Dbhelper.getConnection();
PreparedStatement pst = null;
ResultSet rs = null;
if(conn!=null) {
try {
String sql = "select count(1) as c from member";
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
if(rs!=null&&rs.next()) {
rtn = rs.getInt("c"); //只要一个字段的值, 就是count(1)
}
}
catch(Exception ex) {
throw ex;
}
finally {
try {
pst.close(); //如果出现异常也要确保资源能够正常释放
}
catch(Exception ex1) {
throw ex1;
}
conn.close();
}
}
return rtn;
}

  数据库的语句和代码的原理是这么来的:

String sql = "select * from (select t.*, rownum as rnum from member t where ROWNUM <= ?) where rnum > ?";

p = con.prepareStatement(sql);
p.setInt(1, maxrows);
p.setInt(2, maxrows-rows);
  占位符的原理, 比如说, 最大行数maxrows是page页面数乘以每页显示的行数rows, 这个很好理解, 当显示第一页的时候, 他的最大行数就是1乘以5, 5减去每行显示的行数5等于0, 这时候加条件判断where rnum >这个数字, 意思就是取第(大于0且小于等于5)的数据, 显示的就是前五行的内容, 以此类推显示第二页的时候最大行数就是2乘以5, 最大行数变成了10, 减去每页显示的行数5等于5, 再加判断条件就是显示6到10行的内容, 第三页的时候就是3乘以5等于15减去每页的行数5等于10, 就是数据库里面第三个五行显示的内容, 就是第三页的内容

这里就是每页取显示5行内容, 那就只从数据库里面的取出5行数据, 从而做到分也显示

关于easyui-datagrid数据表格, 分页取出数据的更多相关文章

  1. MySQL+Service+Servlet+Jsp实现Table表格分页展示数据

    下面以一个示例讲解如何使用MySQL+Service+Servlet+Jsp实现Table表格分页展示数据: eg:请假管理系统 要求如下: 一.打开首页页面, 访问查询请假记录的 servlet , ...

  2. SPA项目开发之动态树+数据表格+分页

    SPA项目开发之动态树+数据表格+分页 动态生成NavMenu导航菜单(只支持2级菜单) <el-menu key="" index=""> < ...

  3. jQuery EasyUI datagrid实现本地分页的方法

    http://www.codeweblog.com/jquery-easyui-datagrid%e5%ae%9e%e7%8e%b0%e6%9c%ac%e5%9c%b0%e5%88%86%e9%a1% ...

  4. easyUI datagrid 前端真分页

    前文再续,书接上一回.easyUI datagrid 前端假分页 http://blog.csdn.net/leftfist/article/details/43164977 真分页是easyUI d ...

  5. EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他

    原创 : EasyUI datagrid 明细表格中编辑框 事件绑定 及灵活计算 可根据此思路 扩展其他 转载,请注明出处哦!谢谢! 原创 : EasyUI datagrid 明细表格中编辑框 事件绑 ...

  6. Layui数据表格的接口数据请求方式为Get

    Layui数据表格的接口数据请求方式为Get

  7. (转)扩展jquery easyui datagrid 之动态绑定列和数据

    本文转载自:http://blog.csdn.net/littlewolf766/article/details/7336550 easyui datagrid 不支持动态加载列,上次使用的方法是自己 ...

  8. Easyui设置动态表格,动态导出数据实例,附Demo

    最近开发的过程中碰到一个客户提出的需求,一个指定的页面导出需要提供一个弹出页面选择列表页面需要显示的列,页面确认之后需要修改列表页面显示的表格,导出的数据也需要同步变化. 总结一下可以称为一个列表数据 ...

  9. Easyui设置动态表格,动态导出数据实例,附Dome

    最近碰到一个需求,需要提供一个弹出页面选择列表页面需要显示的列,页面确认之后需要修改列表页面显示的表格,导出的数据也需要同步变化. 下面直接上代码 1.设置需要显示的列columus为全局对象,用于子 ...

随机推荐

  1. 数据库启动失败:The server quit without updating PID file

    1.可能是/usr/local/mysql/data/mysql.pid文件没有写的权限解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R ...

  2. 杂项:Office Visio

    ylbtech-杂项:Office Visio Office Visio 是一款便于IT和商务人员就复杂信息.系统和流程进行可视化处理.分析和交流的软件.使用具有专业外观的 Office Visio ...

  3. VBA文本型数字变成数值

    sub test()with activesheet  .usedrange.numberformatlocal=""  .usedrange=.usedrange.valueen ...

  4. RBAC相关的配置

    一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注. 在RBAC中,权限与角色相关联,用户通 ...

  5. python中for...if...构建List

    1.简单的for...[if]...语句 >>> a=[12, 3, 4, 6, 7, 13, 21] >>> newList = [x for x in a] & ...

  6. 深度学习、图像识别入门,从VGG16卷积神经网络开始

    刚开始接触深度学习.卷积神经网络的时候非常懵逼,不知道从何入手,我觉得应该有一个进阶的过程,也就是说,理应有一些基本概念作为奠基石,让你有底气去完全理解一个庞大的卷积神经网络: 本文思路: 一.我认为 ...

  7. Flash和滚动字幕

    flash 1.插入flash     1)<object>             <embed src="路径"></embed>      ...

  8. linux操作系统4 软件包管理

    知识内容: 1.软件包介绍 2.基本软件包安装 3.yum软件包管理 4.apt软件包管理 5.源码安装 一.软件包介绍 1.软件包分类 压缩包形式:类似.tar.gz结尾的文件(源码) rpm: r ...

  9. uva-10194-排序

    题意: 如果一个队伍的得分比对方高,那么就赢得这场游戏,很明显,如果得分低那就是输了,如果俩个队伍的得分一样,那么就是平局,赢得比较获得3个点的得分,平手1个点的得分,输了0分.排序规则如下1:得分点 ...

  10. 异常信息ASM ClassReader failed to parse class file的问题解决

    jdk8与spring 3不兼容问题:用jdk7.或者升级到spring4 详情:异常信息ASM ClassReader failed to parse class file的问题解决