Мои пользователи приложения спросили, было ли это возможно для страниц, которые содержат jqGrid для запоминания фильтра, порядка сортировки и текущей страницы сетки (потому что, когда они нажимают объект сетки, чтобы выполнить задачу и затем вернуться к нему, они хотели бы, чтобы это было, "когда они оставили его"),
Cookie, кажется, путь вперед, но как заставить страницу загружать их и устанавливать их в сетке, прежде чем это выполнит свой первый запрос данных, немного вне меня на данном этапе.
У кого-либо есть опыт с такого рода вещью с jqGrid?Спасибо!
ПРОБЛЕМА РЕШЕНА
В конечном итоге я использовал файлы cookie в javascript для хранения столбца сортировки, порядка сортировки, номера страницы, строк сетки и деталей фильтра сетки (используя файлы cookie JSON / Javascript - prefs
] объект)
Сохранить настройки
- Вызывается из $ (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;
}
Часть работы, что вам нужно, вы можете реализовать с помощью jqGridExport
и jqGridImport
(см. http://www. trirand.com/jqgridwiki/doku.php?id=wiki:import_methods), но мне кажется, что вы хотите большего, чем есть в jqGrid. Некоторые дополнительные возможности вам придется реализовать самостоятельно.
Если пользователь входит в систему, вы можете отправлять запросы AJAX обратно на сервер при изменении этих параметров. Затем вы можете сохранить настройки либо в базе данных (чтобы сделать их постоянными), либо в сеансе (чтобы сохранить их временно), либо в обоих случаях (из соображений производительности).
В любом случае, если параметры хранятся на стороне сервера, вы можете просто отправить их на страницу, когда она будет запрошена.