Problem solved
J'ai finalement fini par utiliser les cookies javascript pour stocker la colonne de tri, l'ordre de tri, numéro de page, les lignes de la grille et les détails du filtre de la grille (en utilisant JSON/Javascript cookies - l'objet prefs
)
Enregistrer les préférences - Appelés de $(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();
Préférences de charge - Appelés de $(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 Référence: http://www.secondpersonplural.ca/jqgriddocs/_2eb0fi5wo.htm
PAR LA DEMANDE - LE CODE filtrage en treillis
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;
}
Je vous recommande de penser à la mise à jour des différentes données du côté serveur. Sera le travail de filtre? Pourriez-vous supprimer les filtres enregistrés après les mises à jour sur le serveur? L'exemple d'easieast est le numéro de page. Comment ressemblera jqGrid du côté client si à la prochaine fois le nombre maximal de pages sera inférieur à la page actuelle enregistrée dans le cookie? Néanmoins je trouve votre mise en œuvre bonne et vous allez définitivement dans la bonne direction. – Oleg
Hé, Jimbo. Je vais avoir ce filterGrid de votre part si vous l'avez. +1 sur question et réponse - exactement ce que je cherchais. –
@David - Mise à jour de ma réponse ci-dessus pour inclure le code filterGrid - tout le meilleur :) – Jimbo