Mam siatkę kendo na mojej stronie i próbuję programowo zapisać filtry siatki używając sessionStorage
i działa to dla większość.Kendo - zapisywanie filtrów siatki za pomocą kodu na stronie ma problemy tylko z kolumnami siatki filtru daty
Problem, który mam, polega na tym, że gdy umieszczam filtr na kolumnie daty, gdy próbuję ponownie zastosować ten filtr, gdy użytkownik nawiguje z powrotem na tę stronę, powoduje to błąd w jednej z anonimowych funkcji b/c Metoda toLowerCase()
nie istnieje. Filtr działa dobrze, jeśli filtruję kolumnę ciągów. Mogę zastosować wiele filtrów i zapisać je do wersji sessionStorage
var i ponownie zastosować do siatki. Tylko z kolumnami daty mam problemy.
Zajęło mi trochę czasu, aby dowiedzieć się, jak dostać się filtruje siatka kendo używając składni:
var theKgridFilters = $("#gridList").data("kendoGrid").dataSource.filter();
Następnie do przechowywania go w sessionStorage
var, musiałem stringify()
obiektu albo nie będzie przytrzymaj filtrów sieciowych w tym var:
sessionStorage.setItem('theGridFilters', JSON.stringify(theKgridFilters));
Następnie, aby ponownie zastosować filtr na siatce, musiałam przekonwertować ciąg z powrotem do obiektu JSON b/c filtr to obiekt z atrybutami, więc użyłem to:
if (sessionStorage.theGridFilters) {
gridFilter = sessionStorage.theGridFilters;
gridFilter = $.parseJSON(gridFilter);
}
który zostanie zastosowany do atrybutu siatki filtracyjnej DataSource:
filter: gridFilter,
Kiedy filtrowanie siatkę na kolumnie data, błąd rzuca na tej linii poniżej:
function anonymous(d, __f, __o) {
return (d.Last_Modified_Date.toLowerCase() == '2013-01-25t06:00:00.000z')
}
gdzie pole z filtrem to Last_Modified_Date
. Jestem całkiem nowy w pracy z jQuery, JS itp. Iz tego co przeczytałem, anonymous() fns są tworzone w locie, więc nie wierzę, że mogę to zmienić.
Sprawdziłem online i ktoś wspomniał o dodaniu funkcji toString()
przed toLowerCase()
. Próbowałem go w debugerze i działało, ale nie wiem, jak uzyskać do niego dostęp za pośrednictwem kodu, aby wprowadzić tę zmianę. Wygląda na to, że anonimowa funkcja jest wywoływana z pliku kendo.web.js na podstawie stosu wywołań debuggera IE.
Również wartość pola data w debugger przedstawiono poniżej:
d.Last_Modified_Date Wed Jan 25 00:00:00 CST 2013 Object, (Date)
Więc nie jestem nawet pewien, czy można go zrównać tę wartość do łańcucha w anonimowym fn powyżej, który jest : '2013-01-25t06:00:00.000z'
.
Proszę dać mi znać, jeśli ktoś ma jakiś pomysł, aby obejść ten problem z filtrem daty. To doprowadza mnie do szaleństwa. Być może istnieje inny sposób, w jaki nie jestem świadom, aby zapisać filtry siatki.
Z góry dziękuję, Bruce!
Jak LAST_MODIFIED_DATE zdefiniowane w 'schema.model'? Czy jawnie zdefiniowałeś go jako "date"? – OnaBai
Cześć OnaBai, tak, jest zdefiniowana jako data: Last_Modified_Date: {type: "date", editable: false}, –
Dziękuję za udzielenie mi pomysłu na użycie sessionStorage. – friend