记住(持久化)jqGrid的过滤器、排序顺序和当前页面 [英] Remember (persist) the filter, sort order and current page of jqGrid

查看:17
本文介绍了记住(持久化)jqGrid的过滤器、排序顺序和当前页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序用户询问是否可以让包含 jqGrid 的页面记住网格的过滤器、排序顺序和当前页面(因为当他们单击网格项执行任务然后返回到它时,他们希望它是他们离开时")

My application users asked if it were possible for pages that contain a jqGrid to remember the filter, sort order and current page of the grid (because when they click a grid item to carry out a task and then go back to it they'd like it to be "as they left it")

Cookies 似乎是前进的方向,但是如何让页面加载这些并在网格中设置它们在这个阶段,在它发出第一个数据请求之前有点超出我的范围.

Cookies seem to be the way forward, but how to get the page to load these and set them in the grid before it makes its first data request is a little beyond me at this stage.

有没有人对jqGrid有这种事情的经验?谢谢!

Does anyone have any experience with this kind of thing with jqGrid? Thanks!

推荐答案

问题解决

我最终在 javascript 中使用 cookie 来存储排序列、排序顺序、页码、网格行和网格的过滤器详细信息(使用 JSON/Javascript cookies - prefs 对象)

I eventually ended up using cookies in javascript to store the sort column, sort order, page number, grid rows and filter details of the grid (using JSON/Javascript cookies - the prefs object)

保存偏好- 从 $(window).unload(function(){ ... });

var filters = {
    fromDate: $('#fromDateFilter').val(),
    toDate: $('#toDateFilter').val(),
    customer: $('#customerFilter').val()
};

prefs.data = {
    filter: filters,
    scol: $('#list').jqGrid('getGridParam', 'sortname'),
    sord: $('#list').jqGrid('getGridParam', 'sortorder'),
    page: $('#list').jqGrid('getGridParam', 'page'),
    rows: $('#list').jqGrid('getGridParam', 'rowNum')
};

prefs.save();

加载首选项- 从 $(document).ready(function(){ ... });

var gridprefs = prefs.load();

$('#fromDateFilter').val(gridprefs.filter.fromDate);
$('#toDateFilter').val(gridprefs.filter.toDate);
$('#customerFilter').val(gridprefs.filter.customer);

$('#list').jqGrid('setGridParam', {
    sortname: gridprefs.scol,
    sortorder: gridprefs.sord,
    page: gridprefs.page,
    rowNum: gridprefs.rows
});

// filterGrid method loads the jqGrid postdata with search criteria and re-requests its data
filterGrid();

jqGrid 参考:http://www.secondpersonplural.ca/jqgriddocs/_2eb0fi5wo.htm

根据大众需求 - 过滤网代码

    function filterGrid() {
        var fields = "";
        var dateFrom = $('#dateFrom').val();
        var dateTo = $('#dateTo').val();

        if (dateFrom != "") fields += (fields.length == 0 ? "" : ",") + createField("shipmentDate", "ge", dateFrom);
        if (dateTo != "") fields += (fields.length == 0 ? "" : ",") + createField("shipmentDate", "le", dateTo);

        var filters = '"{"groupOp":"AND","rules":[' + fields + ']}"';

        if (fields.length == 0) {
            $("#list").jqGrid('setGridParam', { search: false, postData: { "filters": ""} }).trigger("reloadGrid");
        } else {
            $("#list").jqGrid('setGridParam', { search: true, postData: { "filters": filters} }).trigger("reloadGrid");
        }

    }

    function createField(name, op, data) {
        var field = '{"field":"' + name + '","op":"' + op + '","data":"' + data + '"}';
        return field;
    }

这篇关于记住(持久化)jqGrid的过滤器、排序顺序和当前页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆