Ext 怎样取出grid中所有记录并保存到数据库呢???

2024-11-08 17:15:34
推荐回答(3个)
回答(1):

function goAllDatas(){
//grid是Ext.gird.GridPanel对象
var store = grid.getStore();
var count = store.getCount();
for (var i = 0; i < count; i++) {
var record = store.getAt(i);
//接下来就是取record里面的字段了
//比如取name字段
var name = record.data.name;
//....
//接下来就是保存操作.....
}
}

回答(2):

两种方法:
1, 在后台取到数据后直接加一行空数据再送到前台, 这样的话客户端不需要做任何处理

2, 在前台store.load事件中增加空行
store.on('load', function(){
var _rec = new this.recordType();
var _key = '';

//枚举所有字段, 设置默认值
for (var i = 0; i < _rec.fields.keys.length; i++){
_key = _rec.fields.keys[i];

//record对象中每个字段初次写入的值会记录在record.modified, 用于记录被修改之前的值
_rec.data[_key] = null;

//第二次根据字段类型写入默认值, record.data中记录的是默认值, record.modified中记录的是null,
//如此可以在客户端提交时区分客户端新增的记录或修改的记录
switch(_rec.fields.get(_key).type){
case 'int':
_rec.set(_key, 0);
break;
case 'float':
_rec.set(_key, 0.0);
break;
case 'boolean':
_rec.set(_key, false);
break;
default:
_rec.set(_key, '');
break;
}
}

//新增记录设置两次值, 则会在每个字段左上角显示红色三角修改标志, 用来凸显新增记录
//如果不需要判断是否客户端新增记录, 去掉第一次设置空值, 直接设置默认值即可
this.add(_rec);
});

回答(3):

var store = grid.getStore();
var selFuns = [];
store.each(function(rec){
selFuns.push(Ext.util.JSON.encode(rec.data));
});这样遍历数据