3

如何在 jqGrid 中对“几天前”格式的日期进行排序?当我当前对网格进行排序时,它无法区分“11 小时前”和“1 天前”。因此,“1 天前”排在顶部,而不是“11 小时前”。

**请参考这张网格图。


在此处输入图像描述

我的 jqGrid 有以下代码。推荐数据是 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”日期格式更改为“几天前”格式。

4

2 回答 2

1

我会将“添加日期”添加到您的 InQuiraRecommendation 类中,并将其作为隐藏字段包含在您的网格中,然后将其用作您的排序列。

于 2012-10-18T17:20:58.643 回答
1

问题从使用datatype: 'local'服务器上准备的数据开始。如果您使用datatype: 'json'服务器负责数据的排序,您只需将正确排序的数据返回给 jqGrid。

另一种方法是实现GetDaysAgo方法,它将以ISO 8601格式发布的日期转换为诸如“11 小时前”或“1 天前”之类的文本,在客户端作为 JavaScript 代码。因此,您可以使用自定义格式化程序(和unformatter)来显示数据。

另一种选择是为定义为 function的列定义自定义sorttype属性。例如,该函数可以返回将使用的小时数,而不是文本“11 小时前”或“1 天前”,用于按列排序。'Posted'

是自定义排序的第一个参考,在这里您会找到一些可以帮助您的代码示例。如果要使用可排序字符串创建隐藏列(例如 ISO 8601),则可以简化自定义排序的实现(sorttypeas 函数的实现)。在sorttype函数内部,您可以根据第二个参数访问该行的任何其他数据sorttype(有关更多信息,请参见此处)。通过这种方式,您可以将'Posted'(来自隐藏列)的 ISO 8601 表示形式作为sorttype 函数的结果返回。

于 2012-10-18T18:33:38.320 回答