Webページに剣道グリッドがあり、を使用してグリッドフィルターをプログラムで保存しようとしていますがsessionStorage
、これはほとんどの部分で機能しています。
toLowerCase()
私が抱えている問題は、日付列にフィルターを配置したときに、ユーザーがそのページに戻ったときにそのフィルターを再適用しようとすると、メソッドが行う匿名関数の1つでエラーが発生することです存在しない。文字列列でフィルタリングしている場合、フィルターは正常に機能します。複数のフィルターを適用してそれらを変数に保存しsessionStorage
、グリッドに再適用することができます。日付列でのみ問題が発生します。
次の構文を使用して剣道グリッドフィルターを取得する方法を理解するのに少し時間がかかりました。
var theKgridFilters = $("#gridList").data("kendoGrid").dataSource.filter();
sessionStorage
次に、それをvarに格納するためにstringify()
、オブジェクトを作成する必要がありました。そうしないと、そのvarにグリッドフィルターが保持されません。
sessionStorage.setItem('theGridFilters', JSON.stringify(theKgridFilters));
次に、グリッドにフィルターを再適用するために、文字列をJSONオブジェクトに変換し直す必要がありました。フィルターは属性を持つオブジェクトであるため、次のように使用しました。
if (sessionStorage.theGridFilters) {
gridFilter = sessionStorage.theGridFilters;
gridFilter = $.parseJSON(gridFilter);
}
グリッドのdataSourceフィルター属性に適用されるもの:
filter: gridFilter,
日付列でグリッドをフィルタリングすると、次の行にエラーが表示されます。
function anonymous(d, __f, __o) {
return (d.Last_Modified_Date.toLowerCase() == '2013-01-25t06:00:00.000z')
}
フィルタがあるフィールドはですLast_Modified_Date
。私はjQueryやJSなどを扱うのはかなり新しいですが、私が読んだことから、anonymous()fnsはその場で作成されるので、これを変更できるとは思いません。
私はオンラインでチェックし、誰かがtoString()
前に関数を追加するように言ったtoLowerCase()
。デバッガーで試してみましたが、機能しましたが、コードを介してこれにアクセスして変更を加える方法がわかりません。IEデバッガーのコールスタックに基づいて、kendo.web.jsファイルから無名関数が呼び出されているようです。
また、デバッガーの日付フィールドの値を以下に示します。
d.Last_Modified_Date Wed Jan 25 00:00:00 CST 2013 Object, (Date)
したがって、その値を上記の匿名fnの文字列(次の文字列)と同等にできるかどうかさえわかりません'2013-01-25t06:00:00.000z'
。
この日付フィルター保存の問題を回避するための洞察があれば教えてください。それは私を狂気に駆り立てています。グリッドフィルターを保存することに気付いていない別の方法があるかもしれません。
よろしくお願いします、ブルース!