как отфильтровать / запросить дату, используя dojox.jsonPath.query - PullRequest
2 голосов
/ 06 декабря 2009

Я имею в виду использовать http://www.sitepen.com/blog/2008/03/17/jsonpath-support/

Вот что я делаю (провел два дня, но не повезло): сначала рисуем сетку данных с целочисленным столбцом и столбцом даты, а также с возможностью сортировки значений столбцов, нажав на заголовок столбца.

теперь использует dojox.jsonPath.query для запроса чисел с использованием синтаксиса, подобного

  jsonStore = new dojox.jsonPath.query(object,"[?(@.+ field1 > 500)]");//works fine

(используя jsonStore для перерисовки сетки) .. до сих пор все работает нормально.

Но теперь пытаюсь отфильтровать даты в другом столбце для сетки данных додзё, используя jsonPath.

var dt = new Date();
jsonStore = new dojox.jsonPath.query(object,"[?(@.effectiveDate<" + dt + ")]");// does not work
// I am trying to get the rows of the grid which have effectiveDate date less 
// than cuurent date or any other passed 'javascript date object'

layout = [{"field":"field1","name":"field1"},{"type":dojox.grid.cells.DateTextBox,"field":"effectiveDate","name":"effectiveDate","formatter":formatDate}];

гдеffectiveDate - поле для схемы сетки данных додзё. но выше не работает и выдает следующую ошибку "jsonPath: отсутствует; перед оператором: _v.effectiveDate

Как мне использовать jsonPath для запроса даты, или мой синтаксис просто неверен?

Есть ли способ, которым мы могли бы использовать dojox.jsonPath.query или dojox.json.query для запроса объектов даты в объекте json, используя операторы <, <=,> =, = .... ??

Любая помощь?

1 Ответ

1 голос
/ 07 декабря 2009

Даты являются проблемными в JSON. Поскольку в JSON нет поддержки собственных типов Date, даты должны быть представлены с использованием числового или строкового представления. Как вы представляете объекты Date в JSON, с которым сравниваете? Если вы используете согласованное представление в ваших данных и запросе и выбираете метод, который сопоставим, это должно сработать. Отметки времени «ISO» лучше всего подходят по ряду причин (см. Dojo.date.stamp) и чаще всего используются в JSON. Следует избегать Date.toString (то, что вы неявно используете путем конкатенации со знаком «+» выше), оно не может быть сортируемым и даже несовместимым в разных браузерах.

...