【问题标题】:How to sort "days ago" formatted date in jqGrid?如何在 jqGrid 中对“几天前”格式的日期进行排序?
【发布时间】:2012-10-09 05:18:59
【问题描述】:

如何在 jqGrid 中对“几天前”格式的日期进行排序?当我当前对网格进行排序时,它无法区分“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”日期格式更改为“几天前”格式。

【问题讨论】:

    标签: date sorting jqgrid format days


    【解决方案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'(来自隐藏列)的 ISO 8601 表示形式作为sorttype 函数的结果返回。

    【讨论】:

    • 将 GetDaysAgo 方法实现为 JavaScript 并使用自定义格式化程序。工作完美。非常感谢奥列格。
    • @Nas:我很高兴听到这个消息。不客气!如果问题解决了可以"accept"回答。
    【解决方案2】:

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

    【讨论】:

    • 感谢您的回复。但我仍然需要使用“已发布”列才能在 Asc 中对日期进行排序。或描述。命令。日期格式应为“天前”格式。如何使用隐藏的“添加日期”列对“已发布”列进行排序?
    • 可能有几种处理方法...我会使用 onSortCol 并在单击 Posted 时将索引从 Posted 更改为隐藏的日期列。 trirand.com/jqgridwiki/doku.php?id=wiki:events
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 2011-09-22
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多