`
atian25
  • 浏览: 467634 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ExtJS EditorGridPanel中时间日期编辑问题的总结

阅读更多

老是被反复问到这个问题,烦了...总结下...

 

1.首先要确保你store中的field是成功的把时间字符串转换为date类型

2.正确的设置grid的renderer以便呈现

3.正确的设置editor的format

4.关于格式化的方式,看ext api中Date的那篇,很详细.

 

截图如下:


代码如下:

Ext.onReady(function(){
  Ext.BLANK_IMAGE_URL = '/js/extjs/3.0/resources/images/default/s.gif';
  //Ext.chart.Chart.CHART_URL = '/js/extjs/3.0/resources/charts.swf';
  Ext.QuickTips.init();
  testEditorGrid();
});

function testEditorGrid(){
  var store = new Ext.data.SimpleStore({
	  fields:[
      //先把json中的时间格式化为date格式
	    {name:'time1',type:'date',dateFormat:'Y-m-d H:i:s'},//对应于2009-10-20 10:00:00
	    {name:'time2',type:'date',dateFormat:'Y-m-d'},//对应于2009-10-20
	    {name:'time3',type:'date',dateFormat:'y-m-d'},//对应于09-10-20
	    {name:'time4',type:'date',dateFormat:'m/d/y'},//对应于10/20/09
        {name:'time5',type:'date',convert:function(v,r){return new Date(r.time5);}} //对应于1293901323000
	  ],
	  data:[
	    ['2009-10-20 10:00:00','2009-10-20','09-10-20','10/20/09',1293901323000]
	  ],
    listeners:{
      'load':function(store,records,options){
        //出了问题的时候,先检查json格式是否正确转换为date
        var r = store.getAt(0);
        var validDate = Ext.isDate(r.get('time1')) && Ext.isDate(r.get('time2')) && Ext.isDate(r.get('time3')) && Ext.isDate(r.get('time4'));
        Ext.Msg.alert('提示','1.在Store里面格式化'+(validDate?'正确!':'错误!'));
      }
    }
	});
  
  var grid = new Ext.grid.EditorGridPanel({
    width: 400,
    height: 200,
    renderTo:Ext.getBody(),
    sm:new Ext.grid.RowSelectionModel({}),
    viewConfig:{forceFit:true},
    store:store,
    columns: [{
      header: '时间1', 
      dataIndex: 'time1',
      //显示在grid上的格式,这里格式化为2009-10-20的格式
      renderer:Ext.util.Format.dateRenderer('Y-m-d'),
      editor:new Ext.form.DateField({
		    //在编辑器里面显示的格式,这里为09-10-20的格式
		    format: 'y-m-d'
		  })
    },{
      header: '时间2', 
      dataIndex: 'time2',
      //显示在grid上的格式,这里格式化为09/10/20的格式
      renderer:Ext.util.Format.dateRenderer('y/m/d'),
      editor:new Ext.form.DateField({
		    //在编辑器里面显示的格式,这里为10/20/09的格式
		    format: 'm/d/y'
		  })
    },{
      header: '时间3', 
      dataIndex: 'time3',
      //显示在grid上的格式,这里格式化为09-10-20 00:00:00的格式
      renderer:Ext.util.Format.dateRenderer('y-m-d H:i:s'),
      editor:new Ext.form.DateField({
        //在编辑器里面显示的格式,这里为2009-10-20的格式
        format: 'Y-m-d'
      })
    },{
      header: '时间4', 
      dataIndex: 'time4',
      //显示在grid上的格式,这里格式化为09年10月20日的格式
      renderer:Ext.util.Format.dateRenderer('y年m月d日'),
      editor:new Ext.form.DateField({
        //在编辑器里面显示的格式,这里为09.10.20的格式
        format: 'y.m.d'
      })
    }]
  })
}
  • 大小: 13.3 KB
分享到:
评论
9 楼 babyhhcsy 2013-11-22  
pizza823 写道
分享下另外中方法
store里面不用变
在列模型里面
renderer:formatDate

	// 格式化日期
	function formatDate(value) {
		if (Ext.isEmpty(value)) {//判断是否是日期类型的数据
			return '';
		} else {
			if (Ext.isDate(value))
				return Ext.util.Format.date(value, 'Y-m-d');// 用于时间控件返回值
			else
				return Ext.util.Format.date(new Date(value), 'Y-m-d');// 转换为Date类型
		}
	}

这个方法可以使用,如果return Ext.util.Format.date(new Date(value), 'Y-m-d');不可以使用的话,可以直接使用return value
8 楼 sprite311 2012-09-07  
     
太感谢了  弄了半天没弄好   用了你的方法就好了 [size=x-large][/size]
7 楼 pizza823 2010-07-16  
分享下另外中方法
store里面不用变
在列模型里面
renderer:formatDate

	// 格式化日期
	function formatDate(value) {
		if (Ext.isEmpty(value)) {//判断是否是日期类型的数据
			return '';
		} else {
			if (Ext.isDate(value))
				return Ext.util.Format.date(value, 'Y-m-d');// 用于时间控件返回值
			else
				return Ext.util.Format.date(new Date(value), 'Y-m-d');// 转换为Date类型
		}
	}
6 楼 pizza823 2010-07-16  
atian25 写道
TO pizza823: 用

{
  name:'validTime',
  type:'date',
  convert:function(v,r){
    return new Date(r.validTime);
  }
}, 


TO whaosoft: 用altFormats属性


thanks a lot
5 楼 atian25 2010-07-15  
TO pizza823: 用

{
  name:'validTime',
  type:'date',
  convert:function(v,r){
    return new Date(r.validTime);
  }
}, 


TO whaosoft: 用altFormats属性
4 楼 pizza823 2010-07-15  
冲第一条
1.首先要确保你store中的field是成功的把时间字符串转换为date类型

服务器返回的数据如下
"roleLimits":"11111111111111111111111111111111"},"recId":1,"idx":null,"shopId":7,"loginName":"admin","passwd":"21232f297a57a5a743894a0e4a801fc3","secPasswdTip":null,"secPasswd":null,"deptName":null,"positionName":null,"validTime":1293901323000,"lastLoginTime":1279165615000,"lastLoginIp":"127.0.0.1","loginCount":77,"createTime":1274405926000
里面"validTime":1293901323000"

因为不是Date类型,所以
即使加上renderer : Ext.util.Format.dateRenderer('Y-m-d')
页面还是输出 NaN-NaN-NaN

	var store = new Ext.data.JsonStore({ // 定义数据源为远程代理和JSON数据格式
		url : 'user/list.json',
		root : "userList",
		totalProperty : 'userCount',
		fields : ["recId", "loginName", "userName", "role.roleName",
			"validTime","enabled","shopId"]
	});

这里如何转换validTime,还是说在后台转换

3 楼 l101y1982j 2009-10-23  
天猪,我来捧你的场了哈。
另外,关于日期格式,大家可以去我的博客看一下《Extjs日期格式问题》一和二
2 楼 atian25 2009-10-05  
whaosoft 写道
呵呵 前些日子我遇到类似功能了 例如输 1/5, 1-5 ... 等都要转成 mmm dd yy的 不过我偷懒了 日期对不对都交给后台了 要不太麻烦 (说的是 2月假如 输了 31号)那种情况  不知道 ext 实现我说的这功能没


啥意思?你想在DateField任意输入后,自动转换? 那就自己修改下DateField的相关方法咯,应该不难,看看源码即知,
1 楼 whaosoft 2009-09-30  
呵呵 前些日子我遇到类似功能了 例如输 1/5, 1-5 ... 等都要转成 mmm dd yy的 不过我偷懒了 日期对不对都交给后台了 要不太麻烦 (说的是 2月假如 输了 31号)那种情况  不知道 ext 实现我说的这功能没

相关推荐

    EXTJS讲解个人项目经历

    - **实用工具(Utils)**:EXTJS提供了各种实用工具,如数据处理、JSON操作、Ajax请求、日期和数组管理等。 5. **EXTJS 2.0的组件体系**: EXTJS 2.0对框架进行了重构,组件体系更加清晰,包括基本组件、工具栏...

    extjs xtype

    10. `editorgrid` - `Ext.grid.EditorGridPanel`:可编辑的表格,允许用户直接在表格中修改数据。 11. `grid` - `Ext.grid.GridPanel`:标准的表格组件,用于展示数据。 12. `paging` - `Ext.PagingToolbar`:分页...

    ExtJs组件类的对应表

    11. **`editorgrid`** - `Ext.grid.EditorGridPanel`,可编辑的表格组件,允许用户直接在表格中编辑数据。 12. **`propertygrid`** - `Ext.grid.PropertyGrid`,属性表格组件,用于展示对象的属性。 13. **`...

    extJs xtype 类型

    11. **`editorgrid`:** 可编辑的表格组件,允许用户直接在表格中编辑数据,通过`Ext.grid.EditorGridPanel`类实现。 12. **`propertygrid`:** 属性表格组件,用于展示对象的属性列表,通过`Ext.grid.PropertyGrid`...

    ExtJs xtype一览

    - **`editorgrid` (Ext.grid.EditorGridPanel)**: 可编辑的表格组件,允许用户直接在表格内进行数据编辑。 - **`propertygrid` (Ext.grid.PropertyGrid)**: 属性表格组件,专门用于展示对象的属性。 - **`editor` ...

    extjs培训2011-12-17

    - `editorgrid`: `Ext.grid.EditorGridPanel` — 可编辑的表格。 - `grid`: `Ext.grid.GridPanel` — 表格。 - `panel`: `Ext.Panel` — 面板。 - `progressbar`: `Ext.ProgressBar` — 进度条。 - `splitbutton`: `...

    Extjs xtype集合

    在Extjs开发过程中,`xtype`(扩展类型)是极为重要的一个概念。它实际上是一种类型标识符,用于快速创建特定类型的组件实例。通过使用预定义的`xtype`值,开发者可以方便地构建出各种复杂的用户界面而无需编写大量...

    extjs的快速入门教程

    - **可编辑的表格(EditorGridPanel)**: - 在表格的基础上增加了编辑功能,用户可以直接修改数据。 #### 七、与服务器交互 - **数据存储(Store)**: - 存储和管理数据集,支持本地数据和远程数据加载。 - **...

    ExtJS基础教程.pdf

    表单面板(FormPanel)和各类字段如复选框(Checkbox)、组合框(ComboBox)、日期字段(DateField)、隐藏字段(Hidden)、HTML编辑器(HtmlEditor)、数字字段(NumberField)、单选按钮(Radio)、文本区域(TextArea)、文本字段...

    基于EXTJS简明教程2.0的笔记

    19. **Ext.grid.EditorGridPanel** 是可编辑的GridPanel,通过在`ColumnModel`中为列添加编辑器(如`TextField`)实现数据的编辑,对于日期数据可能需要使用特定的编辑器如`DateField`。 EXTJS的灵活性和强大功能使...

    Extjs实用教程

    - **EditorGridPanel**: `Ext.grid.EditorGridPanel`,可编辑的表格组件。 - **GridPanel**: `Ext.grid.GridPanel`,表格组件。 - **PagingToolbar**: `Ext.PagingToolbar`,分页工具栏。 - **Panel**: `Ext....

    老师整理的extjs学习笔记

    `Ext.grid.EditorGridPanel` 是一个扩展了 `Ext.grid.GridPanel` 的组件,允许直接在表格中编辑数据。它结合了表格视图和表单编辑功能,使得数据编辑变得更加直观。 #### 九、Ext.tree.TreePanel -- 树的使用 **...

    extjs控件列表

    - **描述**: 可编辑的表格组件,允许用户直接在表格中编辑数据。 - **用途**: 管理系统中的数据编辑功能。 **Ext.grid.PropertyGrid** - **描述**: 属性表格,用于显示对象的属性及其值。 - **用途**: 查看和编辑...

    EXT的基础文档

    3. **表单组建**:EXTJS提供了一系列用于构建表单的组件,如Editor(编辑器)、EditorGridPanel(可编辑的表格)、GridPanel(表格)、DatePicker(日期选择器)等。这些组件使得在Web上处理用户输入数据变得简单。 ...

    ext教程1.pdf

    - **表单及元素组件**:`Ext.Editor`(编辑器)、`Ext.grid.EditorGridPanel`(可编辑的表格)等。 EXTJS 的强大之处在于它提供了丰富的组件库和灵活的布局机制,使得开发者可以轻松构建复杂的应用程序界面,同时...

    ext学习之路

    - **EditorGridPanel**:具备编辑功能的网格面板,适用于数据表格的编辑操作。 - **GridPanel**:基本的数据表格组件,可展示大量数据并支持排序、过滤等功能。 - **PagingToolbar**:分页工具栏,用于处理大量数据...

    EXT_JS实用开发指南_个人整理笔记.docx

    - **表单及元素组件**:Editor(编辑器)、EditorGridPanel(可编辑表格)等。 EXT_JS的强项在于它的组件化设计,使得开发者能够快速地搭建复杂的UI界面,并且提供了丰富的功能和良好的性能。通过对EXT_JS的学习和...

    EXT_JS实用开发指南_个人整理笔记

    通常,这包括`extjs/resources/css/ext-all.css`用于样式,`extjs/adapter/ext/ext-base.js`作为适配器,以及`extjs/ext-all.js`包含EXT_JS的核心功能。`Ext.onReady`函数在页面加载完成后执行,是EXT_JS应用的启动...

    Ext组件描述,各个组件含义

    - **主要用途**:通常用于图形编辑应用或需要用户自定义颜色的应用场景中。 **1.4 Component (Ext.Component)** - **xtype**: `component` - **功能描述**:Component 是所有 Ext 组件的基础类,它定义了所有 Ext ...

Global site tag (gtag.js) - Google Analytics