PROBLEM GELÖST
I endete schließlich mit Hilfe von Cookies in Javascript, um die Sortierspalte zu speichern, Sortierreihenfolge, Seitenzahl, Startreihen und Filter Details des Gitters (mit JSON/Javascript cookies - das prefs
Objekt)
Einstellungen speichern - Called von $(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();
Lasteinstellungen - Called von $(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 Referenz: http://www.secondpersonplural.ca/jqgriddocs/_2eb0fi5wo.htm
BY POPULAR DEMAND - THE FILTERGRID CODE
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;
}
Ich empfehle Ihnen, über die Aktualisierung verschiedener Daten auf der Serverseite nachzudenken. Wird der Filter funktionieren? Können Sie die gespeicherten Filter nach Updates auf dem Server löschen? Das einfachste Beispiel ist die Seitennummer. Wie sieht jqGrid auf der Clientseite aus, wenn beim nächsten Mal die maximale Anzahl der Seiten kleiner ist als die aktuelle Seite im Cookie? Trotzdem finde ich Ihre Umsetzung gut und Sie gehen definitiv in die richtige Richtung. – Oleg
Hey, Jimbo. Ich werde das FilterGrid von dir haben, wenn du es hast. +1 auf Frage und Antwort - genau das, was ich gesucht habe. –
@David - Meine Antwort oben aktualisiert, um den FilterGrid-Code aufzunehmen - alles Gute :) – Jimbo