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