如何使用dojox.jsonPath.query过滤/查询日期

时间:2009-12-06 18:18:16

标签: date datagrid dojo filtering jsonpath

我指的是使用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过滤掉dojo datagrid的另一列上的日期。

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}];

其中effectiveDate是dojo datagrid布局的字段。但上述操作不起作用并引发跟踪错误 “jsonPath:missing; before statement:_v.effectiveDate

如何使用jsonPath查询日期,或者我的语法错误?

有没有办法可以使用dojox.jsonPath.query或dojox.json.query使用&lt;,&lt; =,&gt; =,=运算符来查询json对象中的日期对象。?? < / p>

任何帮助?

1 个答案:

答案 0 :(得分:1)

日期在JSON中存在问题。由于JSON中没有本机日期类型支持,因此必须使用数字或字符串表示来表示日期。你如何在你正在比较的JSON中表示Date对象?如果您在数据和查询中使用一致的表示形式,并且选择了可比较的方法,则应该可以使用。 “ISO”时间戳最好有很多原因(参见dojo.date.stamp),最常用于JSON。应避免使用Date.toString(您通过与上面的“+”连接而隐式使用的内容),不能进行排序,甚至不能跨浏览器保持一致。