【问题标题】:jqGrid shows 13 digit number rather than format datejqGrid 显示 13 位数字而不是格式日期
【发布时间】:2011-08-22 19:04:37
【问题描述】:

我的 jqGrid 在初始网格负载上显示 (1303153262000)。但是,当对列进行排序时,日期的格式正确为(8 月 18 日上午 11:43)。有没有办法让网格在加载时自动进行这种格式化?

这正是从服务器返回的日期的样子 (2011-04-18 19:01:02)。

这是我正在使用的 jqGrid 列模型:

jQuery("#list4").jqGrid({
datatype: "local",
height: 250,
colNames:['Original ID','Date Created', 'Type', 'Title'],
colModel:[  
{name:'Id',index:'Id'},
{name:'cDate',index:'cDate', width:120, sorttype:'date', formatter:'date',     formatoptions: {srcformat:'M d h:i', newformat:'M d g:i A'}},  
{name:'xData',index:'xData', width:120}, 
{name:'zData',index:'zData', width:140}
],
rowNum: 1000,
multiselect: true,
toolbar: [true, "top"]
});

任何帮助将不胜感激!谢谢。

编辑:

@Oleg 这里是数据在服务器端的样子:

2011-04-18 19:01:02
2011-04-18 19:01:28
2011-01-07 01:00:20
2011-04-18 19:01:02
2011-04-18 19:01:28
2011-01-07 01:00:20
2011-06-29 22:20:29
2011-06-29 21:47:55

这是返回到 jqGrid 时的样子:

Test: 1303153262000
Test: 1303153288000
Test: 1294362020000
Test: 1303153262000
Test: 1303153288000
Test: 1294362020000

我是否必须使用返回的结果创建一个新数组,并使用函数将纪元日期更改为我想要的日期格式?必须这样做是没有意义的,因为 jqGrid 显然具有该功能,但只有当用户单击排序时。有没有办法让 jqGrid 在页面加载时执行此操作?

我从 Eclipse 中提取了这个。我正在使用一个名为 NotesArray 的列表/数组。这是从服务器返回的数组:

NotesArray:{Original_Created_Date__c=2011-07-01 01:06:55, Title__c=Title of message 1 00001073: 06/30/2011 18:07:07, Type__c=Task, Id=a0D8000000Na0Q0EAJ, Originating_Id__c=00T8000001nuEzPEAU}
NotesArray:{Original_Created_Date__c=2011-06-30 22:14:48, Title__c=Title of message 2 00001072: 06/30/2011 15:15:00, Type__c=Task, Id=a0D8000000Na0Q1EAJ, Originating_Id__c=00T8000001nuCccEAE}
NotesArray:{Original_Created_Date__c=2011-06-30 21:24:47, Title__c=Title of message 3 00001071: 06/30/2011 14:25:00, Type__c=Task, Id=a0D8000000Na0Q2EAJ, Originating_Id__c=00T8000001nuB5cEAE}
NotesArray:{Original_Created_Date__c=2011-06-30 21:19:48, Title__c=Title of message 4 00001070: 06/30/2011 14:20:00, Type__c=Task, Id=a0D8000000Na0Q3EAJ, Originating_Id__c=00T8000001nuBFiEAM}
NotesArray:{Original_Created_Date__c=2011-06-30 21:14:47, Title__c=Title of message 5 00001069: 06/30/2011 14:15:00, Type__c=Task, Id=a0D8000000Na0Q4EAJ, Originating_Id__c=00T8000001nuAzDEAU}
NotesArray:{Original_Created_Date__c=2011-06-30 21:09:47, Title__c=Title of message 6 00001068: 06/30/2011 14:10:00, Type__c=Task, Id=a0D8000000Na0Q5EAJ, Originating_Id__c=00T8000001nuASSEA2}

将返回更改为 JSON:

{"rows": [{"ObjectType": "Event","CreatedDate": "2011-01-03 09:16:51","ActivityType": "Call","OriginalId": "00U8000000Elxb4EAB","Title": "TEST EVENT"},{"ObjectType": "Event","CreatedDate": "2011-01-03 08:53:22","ActivityType": "Meeting","OriginalId": "00U8000000ElxY9EAJ","Title": "sadfasdf"},{"ObjectType": "Event","CreatedDate": "2011-01-03 08:51:04","ActivityType": "Meeting","OriginalId": "00U8000000ElxXkEAJ","Title": "werwrasdf"},{"ObjectType": "Task","CreatedDate": "2011-01-06 14:42:43","ActivityType": "Call","OriginalId": "00T8000001bce9VEAQ","Title": "test"},{"ObjectType": "Task","CreatedDate": "2011-01-03 08:50:41","ActivityType": "Meeting","OriginalId": "00T8000001aiqAXEAY","Title": "asdfasdfasf"},{"ObjectType": "Task","CreatedDate": "2011-01-03 08:50:29","ActivityType": "Call","OriginalId": "00T8000001aiqAcEAI","Title": "asdfsaf"},{"ObjectType": "Task","CreatedDate": "2011-01-03 08:52:55","ActivityType": "Call","OriginalId": "00T8000001aiqBuEAI","Title": "asdfsaf"},{"ObjectType": "Note","CreatedDate": "2011-08-22 15:17:11","ActivityType": "Note","OriginalId": "0028000000T03CUAAZ","Title": "Mondays Best"},{"ObjectType": "Note","CreatedDate": "2011-08-18 11:43:25","ActivityType": "Note","OriginalId": "0028000000SzwIjAAJ","Title": "Note Test"}]}

【问题讨论】:

  • 我没有答案,但 1303153262000 是自“Unix 纪元”以来的毫秒数,1970-01-01 00:00:00 UTC,截至 2011-04-18 19 :01:02。

标签: date jqgrid format onload


【解决方案1】:

如果来自服务器的日期为“2011-04-18 19:01:02”,为什么您使用'M d h:i' 而不是'Y-m-d H:i:s' 作为srcformat 的值?

如果使用

formatoptions: {srcformat:'Y-m-d H:i:s', newformat:'M d g:i A'}

不会解决您的问题,您应该包含用于填充“cDate”列的输入数据的确切示例。

已更新:您可以加载直接在 jqGrid 中发布的 JSON 数据。请参阅修改后的演示 here。您只需要在 jqGrid 中使用 JSON 数据中的列名称,另外您应该使用

loadonce: true,
jsonReader: {
    repeatitems: false,
    id: "OriginalId",
    root: "rows",
    page: function (obj) { return 1; },
    total: function (obj) { return 1; },
    records: function (obj) { return obj.length; }
}

在演示中,我又添加了一列,因为我不知道您希望在 'Type' 列中显示是 ObjectType 还是 ActivityType。您可以从 jqGrid(不适用于 JSON)中删除您不需要 显示 的任何列。例如,如果用户对 OriginalId 列中的包含不感兴趣,您可以从网格中删除相应的列。

【讨论】:

  • 测试:1303153262000 测试:1303153288000 测试:1294362020000 测试:1303153262000 测试:1303153288000 测试:1294362020000
  • @Antonio Herrera:您发布的代码有datatype: "local"。所以目前还不清楚如何填充网格。您写道,您从服务器获取数据。为什么不使用datatype: "json"datatype: "json"?我如何理解您的数据仅在初始网格加载时以错误的方式显示,但您没有包含初始网格填充(加载)的代码。您可以将代码添加到您的问题中吗?
  • @Antonio Herrera:看看the demo。这不是你想要的吗?
  • 啊,抱歉@Oleg 是的,我确实不小心把它漏掉了。这是我用来填充网格的循环 java => for(var i=0;i
  • @Antonio Herrera:addRowData mathod 将原始数据放在网格中没有任何数据格式。为什么不像my demo那样从服务器加载数据?
猜你喜欢
  • 2022-10-24
  • 2021-01-15
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 2022-01-09
相关资源
最近更新 更多