背景: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的学习阶段,如果哪路大神有更优的解决方案,麻烦指点一下!