记住(持久化)jqGrid的过滤器、排序顺序和当前页面 [英] Remember (persist) the filter, sort order and current page of 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屋!