easyui datagrid loadFilter怎么条件过滤数据

2025-04-26 01:06:45
推荐回答(1个)
回答1:

给你一个我写好的分页方法:

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) {
            dg.datagrid('loading');
            setTimeout(function () {
                opts.pageNumber = pageNum;
                opts.pageSize = pageSize;
                pager.pagination('refresh', {
                    pageNumber: pageNum,
                    pageSize: pageSize
                });
                dg.datagrid('loadData', data);
            }, 1);
        },
        onChangePageSize: function (pageSize) {
            var dgID = dg.attr("id");
            $.cookie(dgID, pageSize, { expires: 365 });
        }
    });
    if (!data.originalRows) {
        data.originalRows = (data.rows);
    }
    if (!opts.remoteSort && opts.sortName) {
        var target = this;
        var names = opts.sortName.split(',');
        var orders = opts.sortOrder.split(',');
        data.originalRows.sort(function (r1, r2) {
            var r = 0;
            for (var i = 0; i < names.length; i++) {
                var sn = names[i];
                var so = orders[i];
                var col = $(target).datagrid('getColumnOption', sn);
                var sortFunc = col.sorter || function (a, b) {
                    return a == b ? 0 : (a > b ? 1 : -1);
                };
                r = sortFunc(r1[sn], r2[sn]) * (so == 'asc' ? 1 : -1);
                if (r != 0) {
                    return r;
                }
            }
            return r;
        });
    }
    var maxPage = Math.ceil(data.originalRows.length / parseInt(opts.pageSize));
    maxPage = maxPage == 0 ? 1 : maxPage;
    opts.pageNumber = maxPage < opts.pageNumber ? maxPage : opts.pageNumber;
    var start = (opts.pageNumber - 1) * parseInt(opts.pageSize);
    var end = start + parseInt(opts.pageSize);
    data.rows = (data.originalRows.slice(start, end));
    return data;
}

$("#grid").datagrid({
.....前面的属性略
loadFilter: pagerFilter
});

其实吧,我觉得,反正我用的时候,所有的Grid都是需要这个分页方法的。所以,我就直接把grid的默认值改掉。这样,就不用每个grid都去绑定loadFilter了。

if ($.fn.datagrid) {
    $.fn.datagrid.defaults.loadFilter = pagerFilter; //分页事件
}

希望能帮到你。