`
kidiaoer
  • 浏览: 805981 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

在Ext中EditorGrid中datefield输入问题解决过程

阅读更多
在Ext中EditorGrid中datefield输入问题解决过程

近日自己做了一个小项目,要用Ext做界面,以前没用过ext,对JavaScript也是一知半解,就边学边做,这是我在这个过程中遇到一个问题的解决过程,欢迎大家批评指正。

一、问题开始
在可编辑表格中有一个日期域,我希望能通过Ext中的日期输入域输入指定格式的日期,以便提交给服务器后方便处理。然而却出现了一些问题。

在这个生产日期列我设置的column model 为
{header:'生产日期',dataIndex:'p_date',editor:new Ext.form.DateField({format:'Y-m-d'})}
然而在这个dateField在输入后日期格式却不正确
输入时:


输入后格式却变了:

二、解决了?
后来我Google了一下,看到有人说datefield定义时应该设置renderer函数,
应该把column model改成这样:
{header:'生产日期',dataIndex:'p_date',renderer:Ext.util.Format.dateRenderer('Y-m-d'),editor:new Ext.form.DateField({format:'Y-m-d'})}
我猜测EditorGridPanel在实现可编辑功能的方法应该是,在单元格中插入一个输入框,用户输入后再获取这个输入框中的值,然后调用renderer函数,再把返回值插入到单元格中。

三、不对

此时界面上的问题解决了,可是在服务器上接收到的日期依然是刚开始的那种英文格式,问题还是没有解决。
我就去查看了我写的在EditorGridPanel 的事件响应函数获取日期的代码:
grid.on('afteredit',function(event){
    var date = event.value;
    .....
}
我意识到这个event.value的值应该是date类型的,在发送到服务器上之前应该转化成正确的字符串格式,
于是我把代码改成下面这样:
grid.on('afteredit',function(event){
    var date = event.value.format("Y-m-d");
    .....
}

四、还是不对

此时服务器上接收到的日期正确了,但是从服务器接收到的日期还是不正确:


不用说,这肯定是renderer函数的返回值了,
从服务器接收来的是字符串,调用renderer函数自然不能获得正确的值了。

五、搞定

在这里我要重新编写一个renderer函数,传入字符串格式的date和Date类型时都能返回正确的值
function dateRender(value){
  if(typeof value == "string"){
   return value;
  }
  return value.format("Y-m-d");
}
column model改成
{header:'生产日期',dataIndex:'p_date',renderer:dateRender,editor:new Ext.form.DateField({format:'Y-m-d'})}

六、都对了
需要格式转换的地方很多,我们再回想一下,发现无非就是Date 和String之间的转换,应该是通过toString方法进行转换的。
由此前面难看的英文日期格式应该就是Date的toString方法返回的值了,
一不做二不休,我们把Date的toString方法改一下:
Date.prototype.toString=function(){
  return this.format("Y-m-d");
};
这样前面的工作都白做了,
表格的事件响应函数恢复原样:
grid.on('afteredit',function(event){
    var date = event.value;
    .....
}
前面写的dateRender函数也不需要了,
column model 定义成:
{header:'生产日期',dataIndex:'p_date',editor:new Ext.form.DateField({format:'Y-m-d'})}
甚至:
{header:'生产日期',dataIndex:'p_date',editor:new Ext.form.DateField()} 也可以。
分享到:
评论

相关推荐

    MySQL,DWR,JSON,EXT 实现EditorGrid

    使用EXT的EditorGrid,实现前台页面对数据直接进行增删改查操作。用户的友好性较好,已经实现分页功能。例子中使用了DWR和JSON.含MySQL数据库脚本,并已加入Log4j日志记录。本例详细讲解可以参见:...

    EXT2.0中文教程

    4.6.1. ext中默认的提交形式 4.6.2. 使用html原始的提交形式 4.6.3. 单纯ajax 4.7. 验证苦旅 4.7.1. 不能为空 4.7.2. 最大长度,最小长度 4.7.3. 借助vtype 4.7.4. 自定义验证规则 4.7.5. 算不上校验的NumberField ...

    可编辑表格Ext.grid.EditorGridPanel

    此文档是可编辑表格Ext.grid.EditorGridPanel的说明以及示例的源代码,放到eclipse里面即可运行,显示出效果!

    Ext 开发指南 学习资料

    4.6.1. ext中默认的提交形式 4.6.2. 使用html原始的提交形式 4.6.3. 单纯ajax 4.7. 验证苦旅 4.7.1. 不能为空 4.7.2. 最大长度,最小长度 4.7.3. 借助vtype 4.7.4. 自定义验证规则 4.7.5. 算不上校验的NumberField ...

    EXT教程EXT用大量的实例演示Ext实例

    4.6.1. ext中默认的提交形式 4.6.2. 使用html原始的提交形式 4.6.3. 单纯ajax 4.7. 验证苦旅 4.7.1. 不能为空 4.7.2. 最大长度,最小长度 4.7.3. 借助vtype 4.7.4. 自定义验证规则 4.7.5. 算不上校验的...

    精通JS脚本之ExtJS框架.part1.rar

    7.2.6 日期输入控件Ext.form.DateField 7.2.7 在线编辑器Ext.form.HtmlEditor 7.3 ExtJS表单组件的综合应用 第8章 设计表格类布局 8.1 表格简介 8.1.1 表格的基本属性 8.1.2 制作第一个表格 8.2 表格常用功能...

    ext 论坛摘要====

    例如实现描述性的列标题(而不是以字段名做为列标题),配置列宽和对齐方式,实现 Dynamic EditorGrid等,通常我们还需要一个配置档,将这些原先硬编码的信息在配置档里配置好,然后在返回的json和xml中,...

    AJAX 入门视频之 Ext 2.0.1 & DWR 1表格实时编辑器实例

    说实话, 我也是特别懒的人, 很早就想看看 Ext, 尤其是做一个实时编辑的带后台的表格例子, 一直没能深入, 今天抽时间深入看了看 Ext 的 EditorGrid,可编辑的表格控件,总算凑出来了个实时增删改的例子(不单独弹出添加...

    精通JS脚本之ExtJS框架.part2.rar

    7.2.6 日期输入控件Ext.form.DateField 7.2.7 在线编辑器Ext.form.HtmlEditor 7.3 ExtJS表单组件的综合应用 第8章 设计表格类布局 8.1 表格简介 8.1.1 表格的基本属性 8.1.2 制作第一个表格 8.2 表格常用功能...

    深入浅出ExtJS第2版

    1.4.2 在项目中使用EXT 3 1.5 为什么页面提示"找不到图片" 3 1.6 辅助开发 4 1.6.1 调试工具Firebug 4 1.6.2 开发利器Spket 7 1.7 本章小结 10 第2章 EXT框架基础 11 2.1 EXT的事件和类 11 2.1.1 自定义...

    ext的edittreegrid实现

    Tree与EditorGrid结合在一起,树形的展示结构,可以对其中的数据进行编辑,类似RowEditor.

    EfsFrame(java开发框架) v2.2 源代码.rar

    c)修正分页列表中下面分页条中 分页那里直接输入数字,回车不跳页的问题; d)修改 一个form中同时存在两个datetime的input时,第二个不能选择时分的bug; e)增加 input的 kind与datatype的自动对应关系默认对应...

    EfsFrame(net开发框架) v2.2 源代码.rar

    c)修正分页列表中下面分页条中 分页那里直接输入数字,回车不跳页的问题; d)修改 一个form中同时存在两个datetime的input时,第二个不能选择时分的bug; e)增加 input的 kind与datatype的自动对应关系默认对应...

    EfsFrame(php开发框架) 2.2.rar

    c)修正分页列表中下面分页条中 分页那里直接输入数字,回车不跳页的问题; d)修改 一个form中同时存在两个datetime的input时,第二个不能选择时分的bug; e)增加 input的 kind与datatype的自动对应关系默认对应...

    EfsFrame(php开发框架) v2.2 源代码.rar

    c)修正分页列表中下面分页条中 分页那里直接输入数字,回车不跳页的问题; d)修改 一个form中同时存在两个datetime的input时,第二个不能选择时分的bug; e)增加 input的 kind与datatype的自动对应关系默认对应...

Global site tag (gtag.js) - Google Analytics