【发布时间】:2013-11-04 07:44:25
【问题描述】:
我在 Java EE Web 应用程序中使用 Ext JS 4.1。
我有一个 Ext.grid.Panel,其中显示了一些日期。 日期存储在 DB2 中。所以我的 Pojo 使用 java.sql.Timestamp。
Ext.data.Model 看起来像:
Ext.define('schedulerTask', {
extend : 'Ext.data.Model',
fields : [ {
name : 'histTimestamp',
type : 'date',
sortType : 'asDate'
}]
});
面板看起来像:
var schedulerTasksHistGrid = Ext.create('Ext.grid.Panel', {
title : 'History',
store : schedTaskHistStore,
columns : [ {
text : "No:",
xtype : 'rownumberer',
width : 30
}, {
xtype : 'datecolumn',
format : 'd/m/Y H:i:s',
text : "histTimestamp",
dataIndex : 'histTimestamp'
}],
renderTo : 'grid_sched_tasks_hist'
});
当我想对 histTimestamp 进行排序时,它没有正确排序。 我读到我应该在 Ext.Data.Model.fields 中指定一个 dateFormat。这是正确的,我应该如何指定它?
【问题讨论】:
-
如何加载模型数据?特别是,您的服务器输出什么日期格式?模型字段的
dateFormat选项必须配置为与此匹配。 -
DB中的格式为:'2009-06-18-20.56.02.000000'。但服务器似乎将其转换为以下格式:'Feb 4, 2013 2:11:58 PM'(使用 Firebug GET Regquest 检查)
-
这确实是您在响应中看到的格式(即 Firebug)。您可以在 the docs 中找到 Ext 日期格式规范。现在,您传递的内容似乎不是机器解析的好格式(应该是“2013-02-04 14:11:58”或“2013-02-04T14:11:58”,如果有时区我认为需要);您可能应该调整您的服务器以输出类似的内容。
-
使用毫秒还是格式正确的真实日期更好?
-
我让服务器以毫秒为单位返回时间戳,并在 ExtJs 中使用“时间”作为日期格式。它可以正确解析和格式化,但排序也不起作用。特别是,日期 30-10-2013 ... 仍然在最前面。
标签: java sql sorting extjs timestamp