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

jqGrid Date column sort does not work with sorttype:'date'

我在MVC4中使用jqgrid来显示数据。我有一个包含日期/日期时间列的网格。我返回的是网格日期列的C DateTime变量数据;它与日期列的formatoption: {srcformat: 'm/d/Y', newformat: 'm/d/Y'}和日期列的formatoption: {srcformat: 'm/d/Y h:i:s', newformat: 'm/d/Y h:i:s A'}显示良好。但当用户单击列标题时,此列的排序不会反映出来。这是日期栏的colModel

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

&对于日期时间列(amp;F)

1
2
3
4
5
{
    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的哪些问题是由于哪种行为不起作用造成的吗?


jqgrid不支持按日期时间排序,只支持按日期排序。因此,您可以使用PDF中给出的备选方案,如下面的示例所示。如果网格中的数据已经按日期和时间排序,并且您还有一个列,其中所有行的索引(如数字)都是1、2、3、…。n。可以对索引列上的日期时间进行排序。这将始终确保日期时间的升序或降序。

可以按其他列内容对jqgrid的日期和时间或日期进行排序。如以下OnSortCol示例所示:

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

我的解决方法是欺骗jqgrid加载int,但显示日期。

我的阴道模型是name:'startdt',index:'startdt',width:50,sortable:true,sorttype:'int',formatter:'date',formatoptions:srcformat:u,newformat:d-m-y",

加载网格数据时,将日期字符串转换为毫秒除以1000。所以在我的例子中,startdt是一个非常大的整数值。

如果日期为空/空,只需加载带有""的网格。

好的是空白/NULL现在被正确排序。升序前有空/空,降序后有空/空。


我建议您将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浏览器中显示省略号。从4.3.2开始,将ui.jqgrid.css线替换为4.3.2线。