easyui 前端处理分页排序

原帖地址:https://bbs.csdn.net/topics/392613293
感谢【Hello World,】、【囧】两位大佬提供的代码。


<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
		<script src="../../../js/jquery-easyui-1.7.0/jquery.min.js" type="text/javascript" charset="utf-8"></script>
		<link rel="stylesheet" type="text/css" href="../../../js/jquery-easyui-1.7.0/themes/default/easyui.css"/>
		<script src="../../../js/jquery-easyui-1.7.0/jquery.easyui.min.js" type="text/javascript" charset="utf-8"></script>
        <title></title>
    <script type="text/javascript">
        jQuery(function(){
            jQuery("#dg").datagrid({
                remoteSort:false,
                rownumbers:true,
                singleSelect:true,
                autoRowHeight:false,
                pagination:true,
                pageSize:2,
                pageList: [1, 2, 3, 4, 5],
                columns: colConfig1,
                loadFilter:pagerFilter,
                data: json_1.rows
            });
             
        });
         
        var colConfig1 = [[
                    {field:'id',title:'id',width:100},
                    {field:'val',title:'val',width:100},
                    {field:'val2',title:'val2',width:100,sortable:true}
                ]];
         
        var json_1 = {"rows":[
{"id":"i1","val":"11","val2":"2"},
{"id":"i2","val":"11","val2":"12"},
{"id":"i2","val":"11","val2":"32"},
{"id":"i2","val":"11","val2":"42"},
{"id":"i3","val":"21","val2":"52"}],
};
 
		function sortData(data, sortName, sortOrder){
			data.sort(function(a, b){
				a = a[sortName];
				b = b[sortName];
				var ret = 0;
				if(a > b){
					ret = 1;
				}else if(a < b){
					ret = -1;
				}
				return sortOrder == 'asc' ? ret : -ret;
			});
		}

        function pagerFilter(data){
            if (typeof data.length == 'number' && typeof data.splice == 'function'){    // is array
                data = {
                    total: data.length,
                    rows: data
                }
            }
            var dg = $(this);
			
            var opts = dg.datagrid('options');
            var pager = dg.datagrid('getPager');
            pager.pagination({
                onSelectPage:function(pageNum, pageSize){
                    opts.pageNumber = pageNum;
                    opts.pageSize = pageSize;
                    pager.pagination('refresh',{
                        pageNumber:pageNum,
                        pageSize:pageSize
                    });
                    dg.datagrid('loadData',data);
                }
            });
            if (!data.originalRows){
                data.originalRows = (data.rows);
            }
			if(opts.sortName){
				sortData(data.originalRows, opts.sortName, opts.sortOrder);
			}
            var start = (opts.pageNumber-1)*parseInt(opts.pageSize);
            var end = start + parseInt(opts.pageSize);
            data.rows = (data.originalRows.slice(start, end));
	
            return data;
        }       
         
    </script>
    </head>
    <body>
        <div>
            <table id="dg"></table>
        </div>
    </body>
 
</html>


<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
		<script src="../../../js/jquery-easyui-1.7.0/jquery.min.js" type="text/javascript" charset="utf-8"></script>
		<link rel="stylesheet" type="text/css" href="../../../js/jquery-easyui-1.7.0/themes/default/easyui.css"/>
		<script src="../../../js/jquery-easyui-1.7.0/jquery.easyui.min.js" type="text/javascript" charset="utf-8"></script>
		<title></title>
    <script type="text/javascript">
        jQuery(function () {
            jQuery("#dg").datagrid({
                remoteSort: false,
                rownumbers: true,
                singleSelect: true,
                autoRowHeight: false,
                pagination: true,
                pageSize: 2,
                pageList: [1, 2, 3, 4, 5],
                columns: colConfig1,
                loadFilter: pagerFilter,
                data: json_1.rows,
                onBeforeSortColumn: onBeforeSortColumn
            });

        });

        var colConfig1 = [[
					{ field: 'id', title: 'id', width: 100 },
					{ field: 'val', title: 'val', width: 100 },
					{ field: 'val2', title: 'val2', width: 100, sortable: true }
        ]];

        //val2如果是字符类型,在排好序取数之后还会被排一次,按字符排序'2'比'12'大
        var json_1 = {
            "rows": [
                { "id": "i1", "val": "11", "val2": 2 },
                { "id": "i2", "val": "11", "val2": 12 },
                { "id": "i2", "val": "11", "val2": 32 },
                { "id": "i2", "val": "11", "val2": 42 },
                { "id": "i3", "val": "21", "val2": 52 }
            ]
        };
        json_1.total = json_1.rows.length;
        function pagerFilter(data) {
            data = JSON.parse(JSON.stringify(json_1));
            var dg = $(this);
            var opts = dg.datagrid('options');
            var pager = dg.datagrid('getPager');
            pager.pagination({
                onSelectPage: function (pageNum, pageSize) {
                    opts.pageNumber = pageNum;
                    opts.pageSize = pageSize;
                    pager.pagination('refresh', {
                        pageNumber: pageNum,
                        pageSize: pageSize
                    });
                    dg.datagrid('loadData', data);
                }
            });
            if (!data.originalRows) {
                data.originalRows = (data.rows);
            }
            var start = (opts.pageNumber - 1) * parseInt(opts.pageSize);
            var end = start + parseInt(opts.pageSize);
            data.rows = (data.originalRows.slice(start, end));
            return data;
        }
        function onBeforeSortColumn(sort, order) {
            if (order.toUpperCase() === 'DESC')
                order = -1
            else
                order = 1;
            json_1.rows.sort(function (a, b) {
                if (parseFloat(a[sort]) > 1 * b[sort])
                    return 1 * order;
                else if (a[sort] * 1 < 1 * b[sort])
                    return -1 * order;
                else
                    return 0;
            });
            return true;
        }
    </script>
</head>
<body>
    <div>
        <table id="dg"></table>
    </div>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值