Ich habe ein Kendo Raster auf meiner Webseite und ich versuche, die Rasterfilter mit der sessionStorage
programmatisch zu speichern und dies funktioniert für die der größte Teil.Kendo - Speichern Gitterfilter über Code auf der Seite hat Probleme nur mit dem Datum Filterraster Spalten
Das Problem, das ich habe ist, dass, wenn ich einen Filter auf eine Datumsspalte platzieren, wenn ich versuche, den Filter erneut anzuwenden, wenn der Benutzer zurück zu dieser Seite navigiert, es in einer der anonymen Funktionen ausfällt b/c Die toLowerCase()
Methode existiert nicht. Der Filter funktioniert einwandfrei, wenn ich nach einer String-Spalte suche. Ich kann mehrere Filter anwenden und sie in einem sessionStorage
var speichern und in das Raster gerade gut wieder anwenden. Nur mit Datumsspalten habe ich Probleme.
Es dauerte eine Weile, um herauszufinden, wie das Kendo-Raster, um die Syntax-Filter zu erhalten:
var theKgridFilters = $("#gridList").data("kendoGrid").dataSource.filter();
Dann ist es zu speichern, in einer sessionStorage
var, ich stringify()
hatte das Objekt oder sonst wäre es nicht halten die Gitterfilter in diesem var:
sessionStorage.setItem('theGridFilters', JSON.stringify(theKgridFilters));
nächstes den Filter auf dem Gitter erneut anzuwenden, musste ich die Zeichenfolge zurück zu einem JSON Objekt konvertieren b/c der Filter ist ein Objekt mit Attributen, so habe ich dies:
if (sessionStorage.theGridFilters) {
gridFilter = sessionStorage.theGridFilters;
gridFilter = $.parseJSON(gridFilter);
}
, die an die Gitter Datasource Filter Attribut angewendet wird:
filter: gridFilter,
Als ich das Gitter auf einer Datumsspalte filtern, die Fehler auf dieser Linie wirft unter:
function anonymous(d, __f, __o) {
return (d.Last_Modified_Date.toLowerCase() == '2013-01-25t06:00:00.000z')
}
Wo die Feld mit dem Filter ist Last_Modified_Date
. Ich bin ziemlich neu in der Arbeit mit jQuery, JS, etc., und von dem, was ich gelesen habe, die anonymen() fns werden im laufenden Betrieb erstellt, also glaube ich nicht, dass ich das ändern kann.
Ich überprüfte online und jemand erwähnt, um toString()
Funktion vor der toLowerCase()
hinzuzufügen. Ich habe es im Debugger ausprobiert und es hat funktioniert, aber ich bin mir nicht sicher, wie ich über den Code auf diese Änderung zugreifen kann. Es sieht so aus, als ob die anonyme Funktion aus der Datei kendo.web.js basierend auf dem Aufruf-Stack des IE-Debuggers aufgerufen wird.
Auch wird der Wert des Datumsfeld im Debugger unten gezeigt:
d.Last_Modified_Date Wed Jan 25 00:00:00 CST 2013 Object, (Date)
Also ich bin nicht einmal sicher, ob es über diesen Wert auf den String in der anonymen fn gleichsetzen kann, das ist : '2013-01-25t06:00:00.000z'
.
Bitte lassen Sie mich wissen, wenn jemand irgendwelche Einsichten hat, um dieses Datum Filter Problem zu umgehen. Es macht mich wahnsinnig. Vielleicht ist mir eine andere Möglichkeit nicht bekannt, die Rasterfilter zu speichern.
Vielen Dank im Voraus, Bruce!
Wie wird LAST_MODIFIED_DATE im 'schema.model' definiert? Haben Sie es ausdrücklich als "Datum" definiert? – OnaBai
Hallo OnaBai, ja es ist als Datum definiert: Last_Modified_Date: {Typ: "Datum", editierbar: falsch}, –
Danke, dass Sie mir die Idee gegeben haben, sessionStorage zu verwenden. – friend