2011-05-03 100 views
14

我使用jqGrid排序日期时遇到问题。鉴于以下日期jqGrid没有正确排序日期

jqGrid的是排序我的日期如下

01/01/2010 
01/01/2011 
01/02/2010 
01/02/2011 

我希望看到

01/01/2010 
01/02/2010 
01/01/2011 
01/02/2011 

我的日期格式为DD/MM/YYYY和我有如下格式选项 -

{ name:'myDate', index: 'myDate', sortable: true, sorttype: 'date' } 

我在这里遗漏了一些东西还是这是jqGrid的限制?

+0

如果使用标准GMT日期格式,排序顺序如何?在我眼中,jgrid使用它进行排序。 – reporter 2011-05-03 10:25:16

回答

22

你犯了典型的错误。问题是jqGrid需要输入日期格式为ISO 8601的日期格式:Y-m-d。

如果您在“DD/MM/YYYY”格式的jqGrid后的输入数据,你应该datefmt: 'm/d/Y'属性添加到列定义。

最好的办法是,以填补在ISO格式电网的最新数据,并输入转换成其他格式只使用以下设置

formatter:'date', formatoptions: {newformat:'m/d/Y'}, datefmt: 'd-M-Y' 

显示在jqGrid的日期比较树演示的源代码:thisthisthis

+0

非常好,谢谢你的帮助:-) – 2011-05-03 11:07:46

+0

@Gilbert Liddell:不客气! – Oleg 2011-05-03 11:25:25

+2

@Gilbert Liddell:还有一个一般的评论。我看到你不会使用你的“投票”权利,你以15个声望点开始。我认为你应该知道一件重要的事情。 [Here](http://stackoverflow.com/faq#howtoask),你可以找到一个简单的规则:“当你看到你的问题的新答案,通过点击答案左侧的向上指向箭头来投票赞成有用的答案“。 “被接受的”和**未投票的**问题将被大多数解释为“封闭”,并且将被搜索引擎放在最后的位置,因为答案被解释为**没有帮助**。 – Oleg 2011-05-03 11:29:48

1

jqGrid不支持按日期时间排序,而是按日期排序。因此,您可以使用PDF中给出的替代方法,例如下面的示例中所示。如果网格中的数据已按日期和时间排序,并且您还有一列,其中所有行的索引都与Numbers中一样为1,2,3,... n。您可以在索引列上对日期时间进行排序。这将始终确保日期时间的asc或desc顺序。

您可以通过另一列内容对jqGrid的日期和时间或日期进行排序。比如下面的例子中给出的onSortCOl:

 onSortCol: function(name,index) { if(name == 'createDateTime') { jQuery("#viewNotesGrid").setGridParam({sortname:"ID"}); } } 
2

的jqGrid不支持日期时间但只是日期排序。

其实,我发现的jqGrid 确实支持的日期时间排序。

我们有一个JSON的Web服务所在的日期是(烦人)这种格式的到来:在使用本

'2/24/2015 9:48:04 AM' 

的jqGrid完全有能力按日期&时间排序:

colModel: [ 
    { name: "dt", sorttype: 'date', datefmt: 'm/d/yyyy h:i:s AmPm' }, 

jqGrid_Sorting

这个特殊的应用程序使用jqGrid 4.4.5(从2008年)所以这不是一个新功能。

希望这会有所帮助。

+0

非常感谢,这件作品很有魅力。 – 2016-02-17 13:25:59

+0

我有个日期,比如'9/24/2015 10:05:47 AM','1/3/2015 6:53:00 AM'所以你认为格式应该是'm/d/yyyy h: ii:ss AmPm' – 2016-02-17 13:29:35

+1

我认为它应该是“m/d/yyyy h:我:AmPm”,但我可能是错的。试试看看。根据他们的文档,jqGrid使用PHP日期格式,所以你可以使用它作为参考:http://php.net/manual/en/function.date.php – 2016-02-18 07:19:01