打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ExtJs中处理时间,出现NaN-NaN-NaN的解决方式

一般我们的前台代码Ext.grid.ColumnModel里会这样写,以便显示日期格式:

//////////////////////////////////////////////////////////////

Js代码
....  
  header:"birthday",

    dataIndex:"birthday"

    ....

    renderer:new Ext.util.Format.dateRenderer("Y-m-d"),  
    .... 

}

....

//////////////////////////////////////////////////////////////

 

  如果你前台这样写的话,那恭喜你,你的显示日期那列将不再正确显示时间,

而是显示为"NaN-NaN-NaN",是吧?

  呵呵,问我怎么知道的?因为最开始我也是这么错的。

  为什么会是错的呢?

  让我们来看看Ext.format.dateRenderer的源代码(开源的东西就是好),

它的源代码是这样的:

 

Js代码

//////////////////////////////////////////////////////////////
dateRenderer : function(format) {   
    return function(v) {   
        return Ext.util.Format.date(v, format);、   
    }  

////////////////////////////////////////////////////////////// 


   可以看出,我们传会来的值,被当做日期又被格式化了一次,我们传回来的是日期吗?

以前是,经过昨天后台代码的修改,我们传回来的仅仅是个字符串了,至于为什么要这么改,

请看昨天写的“Extjs日期格式问题(一) ”,那咋办?有的朋友应该已经想到了,既然是字符串,

那就直接显示呗,不用renderer了,于是前台代码Ext.grid.ColumnModel里就变成了:

 

Js代码

////////////////////////////////////////////////////////////// 
....  
{header:"birthday",dataIndex:"birthday".......),  
.... 
//////////////////////////////////////////////////////////////

 

  可以负责任的告诉你,这样写,绝对可以正确显示了,这样是不是感觉更简单了呢?

 

  但是,基于我项目里的要求,这个问题并没有解决完,因为在这里不是一个简单的gridpanel,

而是一个editgridpanel,所以还得定义一个editor,于是有了下面这样一段代码:

 

Js代码

//////////////////////////////////////////////////////////////
....  
{header:"birthday",dataIndex:"birthday".......,   
      editor:new Ext.grid.GridEditor(new Ext.form.DateField({format:"Y-m-d"})),  
..... 

//////////////////////////////////////////////////////////////

 
  加了这个DateField控件后,每次可以正常的选择日期,但是选择完日期后,

grid里显示的格式就又不正确了,这次显示的内容成了: "Wed Mar 04 1970......",

这样的格式一看就是个日期,这样显示的原因当然是因为我们没有写renderer进行格式化处理的缘故。。。

说到这里,有人应该已经想到解决办法了,另外有些人可能就抓狂了,这renderer加了不能正常显示,

不加也不能正常显示,这很矛盾啊。。

  问题往往到了最矛盾的时候,也是到了解决的时候,现在我把解决代码贴出来,大家一看就明白了。

多的不说,看代码:

 

Js代码
//////////////////////////////////////////////////////////////

renderer:function(value){   
    if(value instanceof Date){   
        return new Date(value).format("Y-m-d");   
    }else{   
        return value;   
    }  
 
//////////////////////////////////////////////////////////////

  简单吧?自己写renderer就是了。

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/w375179337/archive/2010/01/07/5152032.aspx

 


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Extjs设置默认日期
extjs的EditorGridPanel中的ComboBox列中显示值的问题
ExtJS EditorGridPanel中时间,在IE下出现NaN
开始深入学习jQuery和extjs
Extjs NANANA 问题解决办法
Extjs 文件上传功能
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服