关键字: extjs日期格式问题(二)

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

Js代码 
1.....   
2.{header:"birthday",dataIndex:"birthday".......renderer:new Ext.util.Format.dateRenderer("Y-m-d"),   
3.....  
.... 
{header:"birthday",dataIndex:"birthday".......renderer:new Ext.util.Format.dateRenderer("Y-m-d"), 
.... 
如果你前台这样写的话,那恭喜你,你的显示日期那列将不再正确显示时间,而是显示为"NaN-NaN-NaN",是吧?呵呵,问我怎么知道的?因为最开始我也是这么错的。 为什么会是错的呢?让我们来看看Ext.format.dateRenderer的源代码(开源的东西就是好),它的源代码是这样的:

Js代码 
1.dateRenderer : function(format) {   
2.    return function(v) {   
3.        return Ext.util.Format.date(v, format);、   
4.    }   
5.}  
dateRenderer : function(format) { 
return function(v) { 
return Ext.util.Format.date(v, format);、 

} 可以看出,我们传会来的值,被当做日期又被格式化了一次,我们传回来的是日期吗?以前是,经过昨天后台代码的修改,我们传回来的仅仅是个字符串了,至于为什么要这么改,请看昨天写的“Extjs日期格式问题(一) ”,那咋办?有的朋友应该已经想到了,既然是字符串,那就直接显示呗,不用renderer了,于是前台代码Ext.grid.ColumnModel里就变成了:

Js代码 
1.....   
2.{header:"birthday",dataIndex:"birthday".......),   
3.....  
.... 
{header:"birthday",dataIndex:"birthday".......), 
....可以负责任的告诉你,这样写,绝对可以正确显示了,这样是不是感觉更简单了呢?

但是,基于我项目里的要求,这个问题并没有解决完,因为在这里不是一个简单的gridpanel,而是一个editgridpanel,所以还得定义一个editor,于是有了下面这样一段代码:

Js代码 
1.....   
2.{header:"birthday",dataIndex:"birthday".......,   
3.      editor:new Ext.grid.GridEditor(new Ext.form.DateField({format:"Y-m-d"})),   
4.....  
.... 
{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代码 
1.renderer:function(value){   
2.    if(value instanceof Date){   
3.        return new Date(value).format("Y-m-d");   
4.    }else{   
5.        return value;   
6.    }   
7.}  
renderer:function(value){ 
if(value instanceof Date){ 
return new Date(value).format("Y-m-d"); 
}else{ 
return value; 

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

ExtJs中处理时间,出现NaN-NaN-NaN的解决方式的更多相关文章

  1. mysql中limit与in不能同时使用的解决方式.

    mysql中limit与in不能同时使用的解决方式. 分类: MySQL2011-10-31 13:53 1277人阅读 评论(0) 收藏 举报 mysqlsubquery MySQL5.1中子查询是 ...

  2. MySQL安装过程中出现“APPLY security settings错误”的解决方式

    ***********************************************声明*************************************************** ...

  3. Django中的图片加载不出来解决方式记录

    背景:Python3.6 + Django2.2 在模板中的html文件中引用图片时,在浏览器中图片总是显示不出来,上网查了很多解决方式,但是都没有解决问题,最终尝试了多次后得以解决,但不清楚原理: ...

  4. eclipse中js报错简单快捷的解决方式

    eclipse中对正确的js文件报错十分常见,我的项目中只要是以.js结尾的必会报错,作为一名小小的程序员,看到“满江红”甚是烦躁!今天就给大家分享一个方便又快捷的解决方案. 瞄准被报错的js文件点鼠 ...

  5. IDEA中Ctrl+Shift+F快捷键无效的解决方式

    某天突然发现idea非常重要的快捷键ctrl+shift+F无效了,网上搜了很多都说是qq快捷键冲突,但是找了下qq快捷键却没有解决,现在给大家一个解决快捷键冲突的思路: 1.查看QQ快捷键--> ...

  6. Eclipse中Ctrl+Shift+f快捷键无效的解决方式

    某天突然发现idea非常重要的快捷键ctrl+shift+f无效了,网上搜了很多都说是qq快捷键冲突,但是找了下qq快捷键却没有解决,现在给大家一个解决快捷键冲突的思路: 1.查看QQ快捷键--> ...

  7. ubuntu16.04中使用搜狗输入法Qt5无法输入中文解决方式

    1.安装fcitx-frontend-qt5 sudo apt-get install fcitx-frontend-qt5 2.将libfcitxplatforminputcontextplugin ...

  8. easyui中datagrid空数据集不刷新的解决方式

    datagrid空间可以异步请求json数据,并将新数据覆盖原有数据,重绘数据表. 但是当回来空数据集的时候,js会产生这样一条错误: TypeError: rows is null for(var ...

  9. [译]如何检查python中的值是否为nan?

    float('nan')是Nan不是一个数字,我该如何判断一个值为nan,有什么简单的方法么? 使用math.isnan()来进行判断 >>> import math >> ...

随机推荐

  1. JS日期时间格式化

    Date.prototype.Format = function (fmt) { //author: meizz var o = { "M+": this.getMonth() + ...

  2. 基于.NET平台常用的框架和开源程序整理

    自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中 也积累了一些开源的组件,就目前想到的先整理于此,如果再想到, ...

  3. MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验

    原文地址:http://liangweilinux.blog.51cto.com/8340258/1728131 首先在此感谢下我的老师年一线实战经验,我当然不能和我的老师平起平坐,得到老师三分之一的 ...

  4. FZU 2212 Super Mobile Charger 第六届福建省赛

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2212 题目大意: 现在有n个手机,一个电量为m%(百分之m)的万能充电宝 然后输入n个手机的现有电量(百分之a ...

  5. JAVA环境变量正确设置,却无法在cmd中javac

    今晚试着重新设置JAVA的环境变量,按着度娘告知的操作方法: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值 ...

  6. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf7

    性能 运行putImageData()比drawImage()慢,同等条件下优先考虑drawImage() 操作图像数据需要遍历大量数据,应该注意几点: 1)避免在循环体中直接访问对象属性,应当保存在 ...

  7. 一步一步写一个简单通用的makefile(二)

    这一篇源代码沿用上一篇的源代码hellomake.c hellofunc.c hellofunc.h makefile 但是代码内容和结构有变化,如下: . ├── include │   └── h ...

  8. Yii中用递归方法实现无限级分类

    用递归方法实现多级分类,适合分级不太多的分类,如三到四级. 数据库结构: Model中(Category.php) /** * 获取全部分类信息 */ public function getAllca ...

  9. [poj 2553]The Bottom of a Graph[Tarjan强连通分量]

    题意: 求出度为0的强连通分量. 思路: 缩点 具体有两种实现: 1.遍历所有边, 边的两端点不在同一强连通分量的话, 将出发点所在强连通分量出度+1. #include <cstdio> ...

  10. typeof和instanceof 运算符

    instanceof运算符与typeof运算符相似,用于识别正在处理的对象的类型,但是在使用 typeof 运算符时采用引用类型存储值会出现一个问题. 无论引用的是什么类型的对象,它都返回 " ...