使用EditorGridPanel时,如何保存“新加”和”更改“的记录?

使用EditorGridPanel时,如何保存“新加”和”更改“的记录?

有没有EditorGridPanel的完整的实用的例子。

EditorGridPanel 向后台传送数据
[url]http://blog.csdn.net/netcreate/archive/2008/03/20/2200307.aspx[/url]

这个问题问得好

首先你获得所有修改的记录

var records = grid.getSelectionModel().getSelecteds();//所有修改的

如果是新增加的记录一般没有id.你判断id有没有就可以了

我一般是这样来做的,通过监听store的两个事件来同步数据库,这个方法很好

[code="js"]
var store = new Ext.data.Store({
url: 'getUsers.action',
storeId:'userid',
paramNames:{
start:'page.start',
limit:'page.limit'
},
reader: new Ext.data.JsonReader({totalProperty: 'totalProperty',root: 'root'},[
{name: 'userid'},{name:'username'},{name: 'password'},{name: 'manager',type : 'bool'},
{name: 'name'},{name: 'address'},{name: 'zip'},{name:'company'}
]),
listeners: {
'update': function(thiz, record, operation){
var user = thiz.getAt(thiz.indexOf(record)).data;
if(operation == Ext.data.Record.EDIT){
Ext.Ajax.request({
url: 'updateUser.action',
params: {
'user.userid': user.userid,
'user.password': user.password,
'user.manager': user.manager,
'user.name': user.name,
'user.address': user.address,
'user.zip': user.zip,
'user.company': user.company
},
success: function(response, opts) {
thiz.commitChanges();
},
failure: function(response, opts) {
Ext.Msg.alert('错误','server-side failure with status code ' + response.status);
thiz.rejectChanges();
}
});
}
},
'remove': function(thiz,record,index){
Ext.Ajax.request({
url: 'deleteUser.action',
params: { 'user.userid': record.data.userid },
failure: function(response, opts) {
Ext.Msg.alert('错误','server-side failure with status code ' + response.status);
store.insert(0,record)
}
});
}
}
});
[/code]

对于insert的,你还可以捕捉add事件

不过我没有这么做.我是添加记录成功后再add记录到store

对GIRD 直接写个 序列化json方法

一并发都后台

反序列化成 map 再转配到pojo里。

再进行 hibernate meger(合并)。
根本不用管 到底是新增海是修改。 处理逻辑都只有一条线

有几种实现的方式

1.针对每条记录
点击新增 数据库请求一个 ID 回来 编辑完成后 update
但是要自己处理好 界面事务 比如放弃操作

2.针对所有记录
界面处理所有的操作后统一提交,后台进行处理