我在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
由于哪种排序行为不起作用而出现了什么问题。
答案 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正确排序。升序首先为空/空,降序最后为空/空。