【问题标题】:jqGrid - date & time format not being appliedjqGrid - 未应用日期和时间格式
【发布时间】:2013-05-21 13:42:03
【问题描述】:

我有一个显示 3 列的 jqGrid,其中一列是日期时间(正在返回的 SQL 日期时间字段)。 colModel 设置如下:

               colModel:[
            {name:"col1",....,sortable:false},
            {name:"col2",....,sortable:false},
            {name:"SendTime",index:"SendTime",width:col3width,align:"left",formatter:"datetime",formatoptions:{srcformat:"ISO8601Long",newformat:"LongTime"},xmlmap:"SendTime",sortable:false}
            ],

从 SQL 返回的日期格式如下:

YYYY-MM-DDTHH:mm:ss

jqGrid 中的所有字段都不可排序,SQL ORDER BY 控制返回数据的顺序。

我想更改返回的日期格式以省略中间的“T” - YYYY-MM-DD HH:mm:ss。如果我不能这样做,我会考虑只使用格式化的军事时间。我在 colModel 设置中尝试了几个格式选项,但只成功格式化日期或时间,但不能同时格式化两者。

这需要自定义格式化程序,还是我忽略了 jqGrid 中的设置?将不胜感激。

谢谢! S

【问题讨论】:

  • 你下载jqGrid的时候确定包含格式化模块了吗?
  • 很确定我做到了。使用版本 4.4.5。 zip 文件比当前的完整版本 (4.5.2) 小约 12k。

标签: jquery sql datetime jqgrid formatting


【解决方案1】:

jqGrid 已经预定义了formatter:"date",但没有预定义formatter:"datetime"(参见the documentation)。因此,您应该修复格式化程序的名称以使其正常工作。

jqGrid 的最新版本支持YYYY-MM-DDTHH:mm:ss 而不仅仅是YYYY-MM-DD HH:mm:ss。因此您无需在后端进行任何更改。

您应该考虑改用sorttype: "date"。如果您使用loadonce: true 或使用datatype: "local",这可能会有所帮助。

【讨论】:

  • 如上所述,我使用的是 4.4.5 版本(当前版本是 4.5.2)。我使用的版本中的日期时间有问题吗?
  • @steve_o:如果我没记错的话,4.5.0 版开始支持T,但是有很多方法可以将T 更改为空格。例如,您可以使用beforeProcessing 回调来修改从服务器返回的数据,然后再由jqGrid 处理。
  • 这就是问题所在。移至当前版本后,我遇到的有关日期和时间的所有格式问题都已解决。
【解决方案2】:

您可以使用 sql CONVERT 在将其放入为网格提供数据的数据集之前对其进行很好的格式化,而不是尝试将 jqgrid 格式化为日期。我不知道您使用的是什么 SQL,但在 SQL Server 中:

SELECT CONVERT(VARCHAR(19), GETDATE(), 120)

最终看起来像

2013-05-21 10:18:39

有关格式的更多信息

http://www.sql-server-helper.com/tips/date-formats.aspx

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 2014-09-02
    • 2015-10-22
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    相关资源
    最近更新 更多