js实现EasyUI-datagrid前台分页

牛腩新闻发布系统中讲到过两种分页的方式:真分页与假分页

这两种分页方式是怎么回事呢?所谓真分页就是从数据库中查询出需要展示的条数,比如10条,下次我再要展示25条的时候它再次访问数据库,查询前25条过来。这样有什么好处呢?减少了数据的传输量提高了第一次查询的速度。适合数据量大的查询。假分页呢?它一次请求后将数据库中所有符合条件的数据返回到前台,然后再查询前25条时它直接将所有数据的前25条展示出来。这样做第一次查询会降低性能,但是后续显示页后速度会很好,它都在缓存里,适合数据量交小的查询。

今天要写的EasyUI-datagrid 分页也是如此,先介绍假分页,之后再写MySQL 分页存储过程实现真分页。

首先js中写关于假分页的代码

//实现假分页
function myLoader(param, success, error) {
    var that = $(this);
    var opts = that.datagrid("options");
    if (!opts.url) {
        return false;
    }
    var cache = that.data().datagrid.cache;
    if (!cache) {
        $.ajax({
            type: opts.method,
            url: opts.url,
            data: param,
            dataType: "json",
            success: function (data) {
                that.data().datagrid['cache'] = data;
                success(bulidData(data));
            },
            error: function () {
                error.apply(this, arguments);
            }
        });
    } else {
        success(bulidData(cache));
    }

    function bulidData(data) {
        var temp = $.extend({}, data);
        var tempRows = [];
        var start = (param.page - 1) * parseInt(param.rows);
        var end = start + parseInt(param.rows);
        var rows = data.rows;
        for (var i = start; i < end; i++) {
            if (rows[i]) {
                tempRows.push(rows[i]);
            } else {
                break;
            }
        }
        temp.rows = tempRows;
        return temp;
    }
}

其次加载datagrid时的调用

 $('#dg').datagrid({
                    loadMsg: '正在努力为您加载数据',
                    url: 'Handler.ashx?action=GetData' + "&Id=" +Id,
                    fitColumn: false,
                    pageNumber: 1,
                    pagination: true,//分页控件
                    rownumbers: true,//显示行号
                    pageSize: 3,
                    pageList: [3, 15, 50, 100],
                    loader: <span style="color:#ff0000;">myLoader</span>, //前端分页加载函数
                    onLoadSuccess: function (data) {
                        $("#dg").data().datagrid.cache = null;//清除datagrid 缓存,保证前台假分页;
                       //$('#dg').datagrid('reload');显示更新后的数据
                    }
                });

上述中的清除缓存的很有必要,我出现的问题是第一次加载完数据后更新参数如果后台有数据,那么datagrid会更新内容,如果是后台没有返回数据的话,它依旧显示原来的数据。

最近一直在从最基础的写网页来写客户端,最大的感触就是多看API,熟悉后再灵活运用写出适合你的业务的网页,以前一直在用别人封装好的,用完后你换个环境你还是不会写,所以这些基础的东西还是很有必要的。但是不能只低头写这些基础,更要抬头看看整个项目的模型和整体框架,你才有更高的提升。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 09:36:54

js实现EasyUI-datagrid前台分页的相关文章

转easyui datagrid 前台分页的实现

easyui datagrid 前台分页的实现java采用的版本 来源:本站原创 js知识 超过5,090人围观 暂无评论 使用easyui分页,有后台服务器端实现和前台浏览器端实现.服务器端实现按规定的格式返回数据就可以了,前台实现需要写js来实现. 代码如下: 关键代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 function pagerFilter(data){      

easyui datagrid 前台分页的实现

<!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>客户端分页demo</title>     <link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/themes/bootstrap

js 控制 easyui datagrid 隐藏之后显示不来的问题

最近有的用到easyui的datagrid,有一个这样的需求,就是当触发一个事件之后控制datagrid的显示与隐藏,初始状态是将其datagrid隐藏起来. 说起隐藏datagrid的时候,也遇到了一些问题,关于easyui的datagrid是不可以直接用display这个属性的,那若是想要隐藏这个table,那么就要在它的外面写一个父级div,然后通过控制这个div的隐藏与显示去满足这个需求. <div class="divEditTabKc" style="dis

easyui datagrid load 封装 参数问题 js 作用域

var temp = { LoginAccount: $('#LoginAccount').val(), ShopName: $('#ShopName').val() }; function doSearch1() { $('#datagrid').datagrid('load', temp); } function doSearch2() { $('#datagrid').datagrid('load', { LoginAccount: $('#LoginAccount').val(), Sh

[JS][easyui]jQuery EasyUI Datagrid VirtualScrollView视图简单分析

 大家都知道EasyUI的Datagrid组件在加载大数据量时的优势并不是很明显,相对于其他一些框架,如果数据量达到几千,便会比较慢,特别是在IE下面.针对这种情况,我们首要做的是要相办法优化datagrid组件的各方面性能,不过任何事情都是可以变通解决的,virtualScrollView就是一种不错的解决方案. virtualScrollView的准则就是尽量少画tr到table里,表格的高度是有限的,而用户的可见区域是很有限的,所以数据量很大的时候,是没有必要将所有数据数据都画到表格中

JQuery EasyUI 学习——Struts2与EasyUI DataGrid数据表格结合使用显示数据库数据

因为EasyUI DataGrid只要取出后台传过来的一定格式的JSON数据,就可以在前台页面数据表格中,以一定形式显示数据库中的数据.此处,我们使用Struts2框架整合DataGrid,实现数据的显示. 一.页面内容 为了在页面中显示数据库中字段内容,需要定义一个table,通过EasyUI内部设计,自动显示数据,如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF

初识 easyui datagrid

首先应该下载好easyui datagrid所用的各种js 和css 这个可以到官网上去下载. 首先要引入datagrid所引入的js和css. <script src="js/jquery.min.js"></script><script src="js/jquery.easyui.min.js"></script><link rel="stylesheet" type="text

easyUI datagrid笔记

easyUI datagrid 简单使用与注意细节 背景: 业余爱好,使用了一下easyUI的搜索框与数据表格,并把两者整合起来进行使用. 使用前提(引入需要的js and css): <link rel="stylesheet" type="text/css" href="./css/easyui.css"> <link rel="stylesheet" type="text/css"

easyui datagrid

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

easyui datagrid中datetime字段的显示和增删改查问题

datagrid中datetime字段的异常显示: 使用过easyui datagrid的应该都知道,如果数据库中的字段是datetime类型,绑定在datagrid显式的时候会不正常显示,一般需要借助于formatter来格式化时间格式 { title: '活动开始时间', field: 'BeginTime', width: 300, editor: { type: 'datetimebox', options: { required: true }, formatter: function