如何在jqGrid中对“days ago”格式化日期进行排序?当我对网格进行排序时,它无法区分“11小时前”和“1天前”。因此,“1天前”排序在顶部,而不是“11小时前”。
**请参考网格图片。
我的jqGrid有以下代码。 recommendationData 是JSON。 已发布列是日期。
$("#tblRecommendationList").jqGrid({
data: recommendationData,
datatype: 'local',
colModel: [
{ name: 'Title', label: 'Title', width: 210, resizable: true },
{ name: 'Channel', label: 'Content Type', width: 120, resizable: true },
{ name: 'StatusNumber', label: 'Status', width: 120, resizable: true,
formatter: GetStatusCode },
{ name: 'Posted', label: 'Posted', width: 120, resizable: true },
{ name: 'RecordId', label: 'RecordId', hidden: true }
],
loadtext: 'Loading...',
loadui: 'block',
emptyDataText: "No Recommendations to display",
shrinkToFit: true,
日期以下列方式传递。
...
returnList =
(
from i in responseList
select new InQuiraRecommendation
{
StatusNumber = i.statusnumber,
Title = i.title,
Text = i.text,
Posted = GetDaysAgo(i.dateadded),
CaseNumber = i.casenumber,
Priority = i.priority,
Channel = i.channel,
RecordId = i.recordid,
}
).ToList();
}
return returnList;
}
GetDaysAgo()将“2012-09-13 07:00:00 Etc / GMT”日期格式更改为“Days ago”格式。
答案 0 :(得分:1)
我将'dateadded'添加到您的InQuiraRecommendation类中,并将其作为网格中的隐藏字段包含在内,然后将其用作排序列。
答案 1 :(得分:1)
问题始于datatype: 'local'
与服务器上准备的数据一起使用。如果您使用datatype: 'json'
,服务器将负责数据的排序,您可以将正确排序的数据返回给jqGrid。
另一种方法是实现GetDaysAgo
方法,该方法将以ISO 8601格式发布的日期转换为“11小时前”或“1天前”的文本,客户端的 作为JavaScript代码。因此,您可以使用custom formatter(和unformatter)来显示数据。
还有一个选项是为sorttype
列定义作为功能定义自定义'Posted'
属性。该函数可以返回例如而不是的文本“11小时前”或“1天前”用于按列排序的小时数。
Here是第一个自定义排序参考,here您会找到一些可以帮助您的代码示例。如果要创建具有可排序字符串的隐藏列(例如ISO 8601),则可以简化自定义排序的实现(作为函数实现sorttype
)。在sorttype
函数内部,您可以访问sorttype
的第二个参数的行的任何其他数据(有关详细信息,请参阅here)。作为'Posted'
函数的结果,您可以返回{8}的{8}的{8}表示(来自隐藏列)。