jqGrid按日期和时间排序,但只显示日期

jqGrid Sorting by date and time, but displaying only date

我的 jqGrid 中有一列当前以 'd/m/y' 格式显示日期。它由 'Y-m-d H:i:s' 格式的日期和时间字符串格式化,并且仅按日期排序。当前的 colModel 如下所示:

{name: 'published_date', index: 'published_date', formatter: 'date', formatoptions: {newformat: 'd/m/y'}}

sortname属性设置为'published_date'。

所以这工作正常。我现在要做的是对日期 时间进行排序,因为同一日期的某些行看似随机排列。我仍然想保持 'd/m/y' 的显示格式,但只是将其与格式化的原始 date/time 排序。

我尝试了一些我发现的建议,但其中 none 对我有用。例如,有人建议将日期转换为整数并尝试对其进行排序,然后将其格式化为 'd/m/y'。似乎也没有有效的日期时间排序字段。

{name: 'published_date', index: 'published_date', sorttype: 'datetime', formatter: 'date', formatoptions: {newformat: 'd/m/y', srcformat: 'Y-m-d H:i:s'}}

如果 jqGrid 中没有任何内置机制来处理这个问题,您对自定义解决方案有何建议?

使用 jqGrid 4.7.0,数据类型为 json,published_date 的服务器数据示例为“2015-03-04 18:38:12”

选项 sorttype 将由 jqGrid 仅在本地排序期间使用 。如果您使用 datatype: "json" 而不使用 loadonce: true,那么 jqGrid 只会显示在服务器端 排序的一页数据 。如果用户点击新页面按钮或点击列 header 对列进行排序,那么 jqGrid 将使用新的 pagesidxsord 参数向服务器发送新请求.所以服务器将负责对数据进行正确排序,并return请求页面的排序数据。

我一般建议在显示不太大的数据集(例如少于 1000 行数据)的情况下更喜欢使用 loadonce: true。服务器应该忽略 pagerows 参数并将 return 所有数据 返回给 jqGrid。一开始只需要对数据进行排序。在第一次加载数据后,jqGrid 将数据保存在 jqGrid 的 data_index 参数中,并将 datatype 更改为 "local"。后面的数据的排序、分页或者filtering/searching都会由jqGrid来实现,不需要和服务器进行任何通信。应该清楚地了解 JavaScript 代码在现代网络浏览器中相对较快。因此,用户将很快看到排序、分页或过滤的结果(在数据量小的情况下几乎立即)。到服务器的最简单请求的往返时间通常要长得多。