您的位置:首页 > Web前端 > JavaScript

extjs 3.4 EditorGridPanel里日期控件在后台获取格式为"2015-10-10T00:00:00"的问题解决

2015-10-10 18:35 781 查看
背景:extjs3.4

需求:后台获取前台EditorGridPanel里选择的日期,然后转换为Timestamp ,timestamp的格式需要为'yyyy-MM-dd HH:mm:ss',但是从前台传递到后台的字符是'yyyy-MM-ddTHH:mm:ss' 。前台的日期显示格式需为“yyyy-MM-dd”。

关键代码:

this.fields = ["number","startTime"];

                this.col = new Ext.grid.ColumnModel({

 defaults:{

width:120,

sortable:true

 },

columns:[{

header:'序号',

dataIndex:'number'

},{

header:'开始日期',

dataIndex:'startTime',

editor:new Ext.form.DateField({

minValue :new Date()

}),

render:function(v){

if(v instanceof Date){

return new Date(v).format("Y-m-d");

}else{

return v.substr(0,10);

}



//renderer:Ext.util.Format.dateRenderer('Y-m-d')      用自己写的render是为了避免页面出现"0NaN-NaN-NaN"的异常

}]

});

this.store = new Ext.data.ArrayStore({

fields:this.fields,

data:this.data //这里就省略data的定义

});

this.grid = new Ext.grid.EditorGridPanel({

store:this.store,

cm:this.col,

width:300,

height:200

});

this.gridHidden = Ext.create({

xtype:'exhidden',

name:'mainList'           

});

在form提交之前重新对Grid里的数据进行格式转换

var dateArr = [];

var store = Ext.decode(this.grid.getGridData());

for(var i =0;i<store.lengh;i++){

var  d = store[i];

var rec = {};

rec.number = d.number;

rec.startTime = Ext.util.Format.date(d.startTime,"Y-m-d H:i:s");

dateArr .push(rec);

}

var jsonStr = Ext.encode(dateArr);

this.gridHidden.setValue(jsonStr );  //最终传递到后台的值

本人正处于extjs的学习阶段,如果哪路大神有更优的解决方案,麻烦指点一下!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: