Ho una griglia di kendo sulla mia pagina web e sto provando a salvare i filtri di rete in modo programmatico usando il sessionStorage
e questo sta funzionando per maggior 'parte.Kendo - salva i filtri di griglia tramite codice nella pagina ha problemi solo con le colonne della griglia del filtro data
Il problema che sto avendo è che quando metto un filtro su una colonna data, quando provo a riapplicare quel filtro quando l'utente torna a quella pagina, sbaglia in una delle funzioni anonime b/c il metodo toLowerCase()
non esiste. Il filtro funziona bene se sto filtrando su una colonna di stringhe. Posso applicare più filtri e salvarli in una variabile sessionStorage
e riapplicare correttamente alla griglia. Solo con colonne di date ho problemi.
ci ho messo un po 'per capire come ottenere la griglia di kendo filtra utilizzando la sintassi:
var theKgridFilters = $("#gridList").data("kendoGrid").dataSource.filter();
Poi, per conservarlo in un sessionStorage
var, ho dovuto stringify()
l'oggetto, altrimenti non sarebbe tenere i filtri griglia dal fatto che var:
sessionStorage.setItem('theGridFilters', JSON.stringify(theKgridFilters));
Successivamente, per riapplicare il filtro sulla griglia, ho dovuto convertire la stringa indietro a un oggetto JSON b/c il filtro è un oggetto con attributi, quindi ho usato questo:
if (sessionStorage.theGridFilters) {
gridFilter = sessionStorage.theGridFilters;
gridFilter = $.parseJSON(gridFilter);
}
che viene applicata all'attributo griglie filtro dataSource:
filter: gridFilter,
Quando a filtrare la griglia su una colonna data, l'errore tiri su questa linea di seguito:
function anonymous(d, __f, __o) {
return (d.Last_Modified_Date.toLowerCase() == '2013-01-25t06:00:00.000z')
}
Dove la il campo con il filtro è Last_Modified_Date
. Sono abbastanza nuovo a lavorare con jQuery, JS, ecc., E da quello che ho letto, i fns anonimi() sono creati al volo, quindi non credo di poterlo cambiare.
Ho controllato online e qualcuno ha menzionato l'aggiunta della funzione toString()
prima dello toLowerCase()
. L'ho provato nel debugger e ha funzionato, ma non sono sicuro di come accedere a questo tramite il codice per apportare tale modifica. Sembra che la funzione anonima sia chiamata dal file kendo.web.js basato sullo stack di chiamate del debugger di IE.
Inoltre, il valore del campo della data nel debugger è la seguente:
d.Last_Modified_Date Wed Jan 25 00:00:00 CST 2013 Object, (Date)
quindi non sono nemmeno sicuro se può equiparare il valore per la stringa nella fn anonimo sopra, che è : '2013-01-25t06:00:00.000z'
.
Per favore fatemi sapere se qualcuno ha qualche intuizione per aggirare questo problema di salvataggio del filtro data. Mi sta facendo impazzire. Forse c'è un altro modo di cui non sono a conoscenza per salvare i filtri della griglia.
Grazie in anticipo, Bruce!
Come viene LAST_MODIFIED_DATE definito nel 'schema.model'? Lo hai definito esplicitamente come 'date'? – OnaBai
Ciao OnaBai, sì è definito come una data: Last_Modified_Date: {type: "date", editable: false}, –
Grazie per avermi dato l'idea di usare sessionStorage pure. – friend