jquery easyui datagrid 分页 详解

前些天用jquery easyui的table easyui-datagrid做分页显示的时候,折腾了很久,后来终于解决了。其实不难,最主要我不是很熟悉前端的东西。
table easyui-datagrid分页 有一个附加的分页控件,只需后台获取分页控件自动提交的两个参数rows(每页显示的记录数)和page(当前第几页)然后读取相应页数的记录,和总记录数total一块返回即可。

1.界面


2.前端代码

<table id="dg" title="文章管理" class="easyui-datagrid" fitColumns="true" pagination="true"
    url="${pageContext.request.contextPath}/admin/showAllTrainee" toolbar="#tb" rownumbers="true">
    <thead>
        <tr>
            <th field="cb" checkbox="true"  align="center"></th>
            <th field="tid" width="20" align="center" hidden="true"></th>   
            <th field="title" width="200" formatter="formatTitle">标题</th>
            <th field="time" width="100" align="center">发布日期</th> 
            <th field="tname" width="100" align="center">实习生姓名</th> 
            <th field="major" width="100" align="center">专业</th> 
            <th field="view_num" width="30" align="center">阅读量</th> 
            <th field="aname" width="100" align="center">发布者</th>
        </tr>
    </thead>
</table>

3.后端我用的是springmvc处理数据,返回json串

package com.jyb.pojo;

/**
 * 
 * @author 
 * @时间 2016-08-06
 *
 */
public class Page {

    private int page;     //当前第几页
    private int rows;     //每页显示记录数
    private int firstPage;  //第几条记录起始
    
    
    public Page(int page, int rows){
        this.page = page;
        this.rows = rows;
    }
    public int getPage() {
        return page;
    }
    public void setPage(int page) {
        this.page = page;
    }
    public int getRows() {
        return rows;
    }
    public void setRows(int rows) {
        this.rows = rows;
    }
    public int getFirstPage() {
        firstPage = (page - 1) * rows;
        return firstPage;
    }   
}

    @SuppressWarnings({ "rawtypes", "unchecked" })
    @ResponseBody
    @RequestMapping(value="/showAllTrainee")
    public Map showAllTrainee(@RequestParam(value="page", required=false) String page, 
            @RequestParam(value="rows", required=false) String rows, @RequestParam(value="title", required=false) String title){
           
          Page pageBean = new Page(Integer.parseInt(page), Integer.parseInt(rows));
          Map reMap = new HashMap();          
          Map paraMap = new HashMap();  
          
          paraMap.put("title", title);
          paraMap.put("firstPage", pageBean.getFirstPage());
          paraMap.put("rows", pageBean.getRows());
          
          try {
            List<Map> list = adminService.showAllTrainee(paraMap);
            long total = adminService.getTraineeTotal(paraMap);
            reMap.put("rows", list);     //存放每页记录数
            reMap.put("total", total);   //存放总记录数 ,必须的
        } catch (Exception e) { 
            e.printStackTrace();
        }
         return reMap; 
    }

其中controller中必须返回json字符串所以加了@ResponseBody注解。

4.mybatis映射文件

select id="selectTraineeLimit" parameterType="map" resultType="map">
                 select 
                     trainee.tid, 
                     admin.name aname, 
                     trainee.name tname, 
                     trainee.major, 
                     trainee.time, 
                     trainee.title, 
                     trainee.view_num 
                 from 
                    trainee, admin 
                 <where>
                    <if test="title != null and title != ''">
                       and trainee.title like concat('%',#{title},'%')
                    </if>                
                       and trainee.aid = admin.aid
                 </where> 
                 order by 
                    trainee.time desc, trainee.tid                
                 limit 
                    #{firstPage}, 
                    #{rows}; 
         </select>
         
         <select id="getTraineeTotal" parameterType="map" resultType="long">
                select count(tid) from trainee
                <where>
                        <if test="title != null and title != ''">
                           and trainee.title like concat('%',#{title},'%')
                        </if>
                        <if test="name != null and name != ''">
                            and name like concat('%',#{name},'%')
                        </if>
                        <if test="major != null and major != ''">
                            and major like concat('%',#{major},'%')
                        </if>
                        <if test="city != null and city != ''">
                            and city like concat('%',#{city},'%')
                        </if>
                        <if test="company != null and company != ''">
                            and company like concat('%',#{company},'%')
                        </if>
                        <if test="title != null and title != ''">
                            and title like concat('%',#{title},'%')
                        </if>  
                </where>                
         </select>

其他代码就不上了,特写出重点的方便自己或别人作为参考。如果有什么问题大家可以留言,我看见了会解答。

附:
table easyui-datagrid 生成一个表格。 属性如下:
  1)title:该DataGrid面板的标题文本。
  2)iconCls:一个CSS类,将提供一个背景图片作为标题图标。
  3)border:当true时,显示该datagrid面板的边框。
  4)width:面板宽度,自动列宽。
  5)height:面板高度,自动列高。
  6)columns:该DataGrid列配置对象,查看column属性可获取更多信息。
  7)frozenColumns:跟Columns属性相同,但是这些列将会被固定在左边。
  8)striped:当true时,单元格显示条纹。默认false。
  9)method:通过该方法类型请求远程数据。默认post。
  10)nowrap:当true时,显示数据在同一行上。默认true。
  11)idField:说明哪个字段是一个标识字段。
  12)url:一个URL,从远程站点获取数据。
  13)loadMsg:当从远程站点加载数据时,显示一个提示信息。默认"Processing,please wait …"。自定义覆盖。
  14)pagination:当true时在DataGrid底部显示一个分页工具栏。默认false。
  15)rownumbers:当true时显示行号。默认false。
  16)singleSelect:当true时只允许当前选择一行。默认false。
  17)fit:当true时,设置大小以适应它的父容器。默认false。
  18)pageNumber:当设置分页属性时,初始化的页码编号。默认从1开始
  19)pageSize:当设置分页属性是,初始化的页面大小。默认10行
  20)pageList:当设置分页属性时,初始化页面的大小选择清单。默认[10,20,30,40,50]
  21)queryParams:当请求远程数据时,也可以发送额外的参数。
  22)sortName:定义哪列可以排序。
  23)sortOrder:定义列的排列顺序,只能是'asc'或'desc'。默认asc。
Column属性如下:
  1)title:该列标题文本。
  2)field:该列对应的字段名称。
  3)width:列宽。
  4)rowspan:说明该单元格需要多少行数。
  5)colspan:说明该单元格需要多少列数。
  6)align:说明Column数据的对齐方式。'left','right','center' 都可以使用。
  7)sortable:当true时,允许该列进行排序。
   8)checkbox:当true时,允许该列出现checkbox。
事件如下:
  1)onLoadSuccess:当远程数据加载成功是激活。
  2)onLoadError:当远程数据加载发现一些错误时激活。
  3)onClickRow:当用户点击某行时激活,参数包含:
   rowIndex: 点击的行索引,从0开始。
   rowData: 点击行时对应的记录。
  4)onDblClickRow:当用户双击某行时激活,参数包含:
    rowIndex: 点击的行索引,从0开始。
    rowData: 点击行时对应的记录。
  5)onSortColumn:当用户对某列排序时激活,参数包含:
   sort:排序字段名称。
   order:排序字段类型。
  6)onSelect:当用户选择某行时激活,参数包含:
   rowIndex: 点击的行索引,从0开始。
   rowData: 点击行时对应的记录。
  7)onUnselect:当用户取消选择某行时激活,参数包含:
    rowIndex: 点击的行索引,从0开始。
   rowData: 点击行时对应的记录。
方法如下:
  1)options:返回选择对象。
  2)resize:重调大小,生成布局。
  3)reload:重新加载数据。
  4)fixColumnSize:固定列大小。
  5)loadData:加载本地数据,过去的行会被删除。
  6)getSelected:返回第一个选中行的记录,若未选返回null。
  7)getSelections:返回选中的所有行,当没有选择记录时将返回空数组。
  8)clearSelections:清除所有选项的选择状态。
  9)selectRow:选择一行,行索引从0开始。
  10)selectRecord:通过传递一个ID值参数,选择一行。
  11)unselectRow:取消选择一行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,326评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,228评论 1 304
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,979评论 0 252
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,489评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,894评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,900评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,075评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,803评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,565评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,778评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,255评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,582评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,254评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,151评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,952评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,035评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,839评论 2 277

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,106评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,296评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,590评论 25 707
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,634评论 1 92
  • 关关是官二代,而且家教甚严。 这样的家庭环境造就的女孩不可小觑! 关关喜欢赵医生,可是她不敢承认,但她也并没有放弃...
    没事扎扎心阅读 211评论 0 0