ext js行扩展器日期格式渲染

时间:2013-12-27 09:34:03

标签: javascript date extjs extjs4.2

我需要在网格上显示4个不同的日期字段。 其中2个将直接显示为列,并且当展开行时,所有这些都将可见。

我正在使用ExtJS 4.2.1

网格以我想要的格式显示日期(如27-12-2013 11:30),但我无法使扩展区域显示格式化日期。

  • 我尝试将渲染器添加到模型字段
  • 我尝试添加dateFormat / dateReadFormat + dateWriteFormat
  • 如果我不添加类型作为日期,则写入java格式,否则 标准日期格式如Fri Dec 20 2013 11:51:00 GMT + 0200(GTB 标准时间)

我从java向Json添加日期,如下所示。

if(account.getCreated() != null)
                accountJson.put("created", new  SimpleDateFormat("yyyy/MM/dd hh:mm").format(account.getCreated()));

            if(account.getModified() != null)
                accountJson.put("modified", new  SimpleDateFormat("yyyy/MM/dd hh:mm").format(account.getModified()));

            if(account.getBeginDate() != null)
                accountJson.put("beginDate", new  SimpleDateFormat("yyyy/MM/dd hh:mm").format(account.getBeginDate()));

            if(account.getEndDate() != null)
                accountJson.put("endDate", new  SimpleDateFormat("yyyy/MM/dd hh:mm").format(account.getEndDate()));

我的分机字段:

........
{name: "created", type: 'date'},
{name: "modified", type: 'date'},
{name: "beginDate", type: 'date'},
{name: "endDate", type: 'date'} 

网格列:

{text: 'Başlangıç Tarihi',      sortable: true, dataIndex: 'beginDate', renderer: Ext.util.Format.dateRenderer('d-m-Y H:i')},
{text: 'Bitiş Zamanı',          sortable: true, dataIndex: 'endDate', renderer: Ext.util.Format.dateRenderer('d-m-Y H:i')}

rowexpander - rowBodyTpl:

'<table class="infoTable">' +  
                "<tr><th>Oluşturma Tarihi</th><td>{created}</td><th>Başlangıç Tarihi</th><td>{beginDate}</td></tr>" + 
                "<tr><th>Değiştirme Tarihi</th><td>{modified}</td><th>Bitiş Tarihi</th><td>{endDate}</td></tr>" + 
             "</table>"

为了表明我的意思,这里有一些截图

image of the grid column date data

image of the expanded area.. sorry for bad marking

在第二张图片中,您还可以看到我需要将一些int值转换为String。我试图将它们发送到像 ..扩展的Tpl ... + + myFormatter(“{beginDate}”)+“......扩展控制的Tpl ...... 这样的函数不起作用:

1 个答案:

答案 0 :(得分:5)

重新格式化日期的方法是来自date的{​​{1}}。示例:

Ext.util.Format

此外,我相信渲染器应该起作用:

Ext.util.Format.date( myDateValue, 'm/d/Y' );

另一个选项可能是修改renderer: function(value){ return Ext.util.Format.date( value, 'm/d/Y' );; } Ext.data.Model中的值。 field有一个Ext.data.Field选项config

convert

您可以转换特定字段的值,也可以使用转换后的值添加另一个字段。