2015-05-07 132 views
0

我在我的jqGrid的列目前显示在“d/M/Y”格式的日期。它格式为'Y-m-d H:i:s'格式的日期和时间字符串,仅按日期排序。目前colModel是这样的:的jqGrid排序按日期和时间,但只显示日期

{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和从服务器published_date的数据的一个例子是“2015年3月4日18时38分12秒”

+0

哪个版本的jqGrid /免费jqGrid/Guriddo jqGrid JS你用?你使用哪种'datatype'? 'sorttype'只能和* local *数据一起使用,或者使用附加选项'loadonce:true'从服务器加载数据。数据有哪些确切的格式?你能否提供你使用的'published_date'的文本数据。 – Oleg

+0

@Oleg感谢您的输入。请参阅上面的编辑。 –

+0

你使用'datatype:“json”**没有**'loadonce:true'吗?在jqGrid根本不排序的情况下,'sorttype'将被忽略。而不是那个jqGrid发送新的请求到服务器的新值'sidx'和'sord'。 **服务器必须返回排序数据的页面**。 – Oleg

回答

2

选项sorttype将由的jqGrid 使用只在当地分拣。如果您使用datatype: "json"没有loadonce: true然后jqGrid的只是desplays一页数据进行排序在服务器端。如果用户点击新页面按钮或在列标题上对列进行排序,那么jqGrid将向服务器发送新请求,新请求为page,sidxsord参数。因此,服务器将负责正确地对数据进行排序并返回所请求的排序数据页面。

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