行使Struts2和jQuery EasyUI达成不难CRUD系统(七)——数据分页处理

上篇完成多选删除的作用之后,接下去就是做分页功效了。曾经的分页是3个麻烦的题材。并且数据量巨大的时候,直接把这一个要素取出来分明速度较慢,所以取一定间隔的数额只怕非常快的。

图片 1

事先自身写分页的时候,分页的界面当然是友好做的,用了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改变,

图片 2

要是你挑选page和rows,是因而ajax将数据传递过去,然后DataGrid局地刷新。

它有会把參数字传送递给url,而struts本人通过get和set方法定义那八个本性之后又能取到那四个值,所以很有益。

也很强劲,界面美观。

其第一次全国代表大会约的CRUD系统功效大体完成,可是鲜明自个儿在JSON和EasyUI的左右方面还不熟知。

其一依然要多练练。

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

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