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

时间:2015-05-07 16:30:47

标签: sorting date jqgrid jqgrid-php

我的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'的显示格式。但只需将其格式化为原始日期/时间。

我已经尝试了一些我已经找到的建议,但它们都没有为我工作过。例如,有人建议将日期转换为整数,然后尝试对其进行排序,然后将其格式化为' 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,来自server_date的服务器数据示例为" 2015-03-04 18:38:12"

1 个答案:

答案 0 :(得分:2)

仅在本地排序期间,jqGrid 将使用选项sorttype。如果您使用datatype: "json"而不使用loadonce: true,则jqGrid只会显示服务器端排序的一页数据。如果用户单击新页面按钮或列标题对列进行排序,则jqGrid将使用新的pagesidxsord参数向服务器发送新请求。因此服务器将负责正确排序数据并返回所请求的已排序数据页。

我建议一般情况下,如果没有显示如此大的数据集(例如少于1000行数据),则更喜欢使用loadonce: true。服务器应忽略pagerows参数,并将所有数据返回给jqGrid。最初需要对数据进行排序。第一次加载后,数据jqGrid将数据保存在jqGrid的data_index参数中,并将datatype更改为"local"。稍后的数据排序,分页或过滤/搜索将由jqGrid实现,而无需与服务器进行任何通信。应该清楚地了解JavaScript代码在现代Web浏览器中相对较快。因此,用户将非常快速地看到排序,分页或过滤的结果(实际上在少量数据的情况下立即)。对服务器的最简单请求的rountrip时间通常要长得多。