jqGrid日期列排序不适用于sorttype:'date'

时间:2013-10-07 10:29:46

标签: jqgrid

我在MVC 4中使用jqGrid来显示数据。我正在使用带有日期/日期时间列的网格。我正在为网格日期列返回C#DateTime变量数据;对于日期列和formatoption: {srcformat: 'm/d/Y', newformat: 'm/d/Y'}显示正常{date}列的formatoption: {srcformat: 'm/d/Y h:i:s', newformat: 'm/d/Y h:i:s A'}。但是,当用户单击列标题时,此列的排序不会反映出来。 这是日期列的colModel

{
    name: 'TestOrderDate', index: 'TestOrderDate', formatter: 'date',
    sorttype: 'date', width: 90, align: 'center', fixed: true,
    formatoptions: { srcformat: 'm/d/Y', newformat: 'm/d/Y' }
},

&安培;对于datetime列

{
    name: 'TestOrderDate', index: 'TestOrderDate', formatter: 'date',
    sorttype: 'date', width: 90, align: 'center', fixed: true,
    formatoptions: { srcformat: 'm/d/Y h:i:s', newformat: 'm/d/Y h:i:s A' }
},

任何人都可以告诉我colModel由于哪种排序行为不起作用而出现了什么问题。

3 个答案:

答案 0 :(得分:3)

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

您可以按其他列内容对jqGrid的日期和时间或日期进行排序。例如下面关于onSortCOl的例子给出:

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

答案 1 :(得分:0)

我建议您将2.5岁版本4.1.1更新到4.5.4版。它包含日期解析的新实现。要对具有sorttype:'date'选项的列进行排序,请首先解析(取消格式化)网格中显示的字符串jqGrid。在旧版本的jqGrid中,'m/d/Y h:i:s A'等格式不支持解析(和排序)。

从4.3.2开始的jqGrid版本不需要文件ellipsis-xbl.xml。它在早期版本中用于在旧版本的Mozilla / Firefox浏览器中显示省略号。 ui.jqgrid.css的{​​{3}}已从4.3.2开始替换为The line

答案 2 :(得分:0)

我的修复方法是欺骗jqGrid加载int但显示日期。

我的colModel是 {name:'startDt',index:'startDt',width:50,sortable:true,sorttype:' int ',formatter:' date ',formatoptions:{ srcformat:“ U ”,newformat:“dMY”}},

加载网格数据时,将日期字符串转换为毫秒除以1000.因此在我的情况下,startDt是一个非常大的整数值。

如果您的日期为空/空,只需使用''。

加载网格

什么是好的,现在空白/ null正确排序。升序首先为空/空,降序最后为空/空。