上篇完毕多选删除的功能之后,接下来就是做分页功能了。曾经的分页是一个麻烦的问题。并且数据量巨大的时候,直接把这些元素取出来显然速度较慢,所以取一定区间的数据还是高效的。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWFpdGk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" height="492" width="698" />

之前自己写分页的时候,分页的界面当然是自己做的,用了ejui之后。真的方便了许多。方便到什么程度了。

<table id="dg" title="My Users" class="easyui-datagrid"
style="width: 700px; height: 500px" url="list_ej" toolbar="#toolbar"
rownumbers="true" fitColumns="true" >
<thead>
<tr>
<!-- 这样的写法也是能够的
<th field="id" width="50">id</th>
<th field="name" width="50">name</th>
<th field="password" width="50">password</th> -->
<th field="ck" checkbox="true"></th>
<th data-options="field:'id',width:'200px'">id</th>
<th data-options="field:'name',width:'200px'">name</th>
<th data-options="field:'password',width:'200px',align:'right'">password</th>
</tr>
</thead>
</table>

仅仅须要在属性里面加入:

pagination="true" pageNumber ="1"

pagination是在底部显示分页工具栏。pageNumber是原始的显示的页数。第几页。

难点在于后台数据要怎么传过去。

在没和后台正确处理页数和每页显示的数据数的关系时,是所有显示的。可是选择页面数的时候ejui还是会正确地帮你跳到详细的页数。但这显然不是我们想要的。

后面在思路上就卡住了。我要怎么将分页栏的数据传到action里面呢?

解决的方法是,直接由rows和page属性。分别相应一页显示的数据条数和当前页数,仅仅须要在action里面声明为全局变量,并写出相应的get和set方法。

public class ControlAction extends ActionSupport{
private int rows;
private int page;
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}

拿到之后容易处理。我们能够写一个封装的方法将拿到的页数和条数。对数据库操作并转换为json串。

public String list_ej(){
ActionContext ctx=ActionContext.getContext();
String result="";
result= PageUtil.getPage(page, rows);
try {
// ServletActionContext.getResponse().getWriter().println(JSONArray.fromObject(list));
ctx.put("json", result); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "success";
}

PageUtil.java

package util;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class PageUtil {
public static String getPage(int pagenumber,int rows){
String result = "";
int count = 0;
int number = 0;
Connection c = ConnectToSQL.getConn();
Statement st = ConnectToSQL.getSt(c);
List<User> list = new ArrayList<User>();
try {
ResultSet countrs = st.executeQuery("select count(*) from user");
countrs.next();
//
//System.out.println(countrs.getInt(1));
count = countrs.getInt(1);
} catch (SQLException e1) {
e1.printStackTrace();
}
if(count%rows==0){
number =count/rows;
}else{
number = count/rows+1;
}
//
//System.out.println(number);
try {
int index = 0;
if(pagenumber-1>0){
index = (pagenumber-1)*rows-1;
}
ResultSet rs = st.executeQuery("select * from user limit "+index+","+rows); while(rs.next()){
User u = new User();
u.setId(rs.getInt("userid"));
u.setName(rs.getString("username"));
u.setPassword(rs.getString("password"));
list.add(u);
}
} catch (SQLException e) {
e.printStackTrace();
} //这个把list看成数组,用json格式输出 仅仅是输出list
List<User> o = JSONArray.fromObject(list); //无需字符串拼接
//String result = "{\"total\":"+count+",\"rows\":"+s+"}"; //接下来的是吧整个对象转json格式 对象有两个属性 total和rows属性 而rows里面又是一个数组
JSONObject jo = new JSONObject();
jo.put("total", count);
jo.put("rows", list);
result = jo.toString();
return result;
}
}

ejui和struts2好用在哪里呢,ejui仅仅须要接受到所有的数据条数和当前页的数据就是rows:后面的json数据,它会自己主动填充到DataGrid中。

{"total":5,"rows":[{"id":1277,"name":"df2","password":"123"},
{"id":1278,"name":"45ty","password":"123"},
{"id":1279,"name":"sdfy","password":"123"},
{"id":1280,"name":"345356","password":"p"},
{"id":1281,"name":"werwer","password":"twer"}]}

而一旦ejui的rows和page改变,

一旦你选择page和rows,是通过ajax将数据传递过去,然后DataGrid局部刷新。

它有会把參数传递给url,而struts本身通过get和set方法定义这两个属性之后又能取到这两个值,所以很方便。

也很强大,界面美观。

这个简单的CRUD系统功能大体完毕,可是显然自己在JSON和EasyUI的掌握方面还不熟悉。

这个还是要多练练。

项目github地址:https://github.com/iaiti/EasyUI-Struts2.git

将java代码和jsp页面代码分离。新建了分支version2.0。

使用Struts2和jQuery EasyUI实现简单CRUD系统(七)——数据分页处理的更多相关文章

  1. 使用Struts2和jQuery EasyUI实现简单CRUD系统(转载汇总)

    使用Struts2和jQuery EasyUI实现简单CRUD系统(一)——从零开始,ajax与Servlet的交互 使用Struts2和jQuery EasyUI实现简单CRUD系统(二)——aja ...

  2. 使用Struts2和jQuery EasyUI实现简单CRUD系统(五)——jsp,json,EasyUI的结合

    这部分比較复杂,之前看过自己的同学开发一个选课系统的时候用到了JSON,可是一直不知道有什么用.写东西也没用到.所以没去学他.然后如今以这样的怀着好奇心,这是做什么用的,这是怎么用的.这是怎么结合的心 ...

  3. 闲来无事做了一个项目,内有redis,EasyUI样式简单应用,七层分页查询,API跨域。

    <link href="~/jquery-easyui-1.5.3/themes/default/easyui.css" rel="stylesheet" ...

  4. jQuery EasyUI 应用 – 创建 CRUD 应用(表格)

    jQuery EasyUI 应用 - 创建 CRUD 应用 本节介绍如何创建CRUD应用. CRUD分别是指在做计算处理时的增加(Create).读取查询(Retrieve).更新(Update)和删 ...

  5. jquery easyui easyui-treegrid 使用异步加载数据

    jquery easyui easyui-treegrid 使用异步加载数据 jquery easyui easyui-treegrid 异步请求 >>>>>>&g ...

  6. 雷林鹏分享:jQuery EasyUI 表单 - 过滤下拉数据网格

    jQuery EasyUI 表单 - 过滤下拉数据网格 下拉数据网格(Combogrid)组件和下拉框(Combobox)组件的共同点是,除了都具有下拉面板以外,它们都是基于数据网格(Datagrid ...

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

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

  8. Struts2第十一篇【简单UI标签、数据回显】

    Struts2UI标签 Sturts2为了简化我们的开发,也为我们提供了UI标签-也就是显示页面的标签-.. 但是呢,Struts2是服务端的框架,因此使用页面的标签是需要在服务器端解析然后再被浏览器 ...

  9. Jquery EasyUI +Ajax +Json +一般处理程序 实现数据的前台与后台的交互 --- 善良公社项目

    经过上一篇博客,本节主要是来看实现的功能是后台的数据通过json数据传过来,前台修改的数据再传回数据库之后页面再次更新table中的数据: 图示: 实例:前台的代码 <%--表格显示区--%&g ...

随机推荐

  1. angular-cli6使用ng serve --o 控制台报错Invalid Host Header

    angular-cli6使用ng serve --o 运行创建的项目,能正常访问,但是控制台一直在报错,点击报错能看到是因为webpack的webpack-dev-server里报的错, 看到网上介绍 ...

  2. 使用scatter画散点图

    刚开始接触Python,照着例子写的代码,百度注释的. from numpy import * import matplotlib import matplotlib.pyplot as plt im ...

  3. SpringBoot结合Mybatis 使用 mapper*.xml 进行数据库增删改查操作

    什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyBa ...

  4. 杭电5137How Many Maos Does the Guanxi Worth

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  5. vim 实际行跟屏幕行移动命令

    我们使用vim的时候,经常会碰到那种情况,就是我们输入的内容过长,中间一直不换行.当我们一行的长度超出电脑屏幕的时候,我们会发现这时候文字自动换行了.不过,如果你使用行号看的话,其实这新的一行是没有行 ...

  6. Android ijkplayer详解使用教程

    1.认识ijkplayer 最近公司准备开发一款视频播放及直播的应用,找了许多开源的框架,大部分都是基于ffmpeg开发的.最开始准备用Vitamio框架开发的,相关的文章也比较丰富,结果对于非个人移 ...

  7. 使用PHP中的curl发送请求

    使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 初始化连接句柄: 设置CURL选项: 执行并获取结果: 释放VURL连接句柄. 下面的程序片段是 ...

  8. centos6.5 数据库的安装

    mongo https://www.cnblogs.com/layezi/p/7290082.html

  9. 如何优雅的写UI——(2)MFC下基于CFormView的文档视图程序

    在MFC中可以创建多种类型的窗口程序,如对话框程序.单文档结构程序(非文档/视图结构).单文档(文档/视图结构)以及多文档视图结构程序等. 在编写一般的小工具时,我们的首选显然是对话框程序,不过基于对 ...

  10. 【习题 8-7 UVA - 11925】Generating Permutations

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 让你把排列1..n变换成对应的输入序列. 每次可以交换前两个数字,或者把第一个数字放到末尾去. 可以逆向考虑. 即把无序的序列变换成 ...