想象一下两个表格和一个网格。表格A由comboxes组成。这些框显示数据库中的数据。用户选择组合框,结果是网格商店的新记录。也可以将新值/记录放入组合框中。 (没有数据库插入) 表格B由几个文本字段组成。它的MasterDetail。网格是主,形式B是细节。最后,我想在一个请求(ajax)上提交表单B和网格存储。在服务器端,我想存储详细数据并将它们与现有记录连接,甚至创建新记录并连接它们。我想将这些操作运行到事务上下文中。
现在我不知道什么是好/最佳做法。我尝试使用grid`s store的sync方法,并将表单(表单B)值包含为extraParams。这是有效的,但有可能在成功请求后我需要用相同的(未触摸的)商店做另一个请求(只有表格B更改),所以我将不得不重置记录状态。 (同步仅执行更改)
也许一个简单的Ext.ajax.request()会对这个工作,但如何通过商店?我可以添加表格B值作为参数,但我不知道如何添加商店?我是否需要将自己的每个记录项添加到params配置中?
info:服务器端是php,db是mysql
答案 0 :(得分:1)
{// form submit button
id: 'save-frm',
text: 'Save',
handler: function(btn) {
//btn.setDisabled(true);
frm = this.up('form').getForm();
if(frm.isValid()){
var store_data = new Array();
your_store.each(function(node){
store_data.push(JSON.stringify({id: node.data.id, name: node.data.name}))
})
frm.submit({
waitMsg: 'Enregistrement en cours...',
submitEmptyText: false,
params:{store_data: JSON.stringify(store_data)},
success: function(form, action){
//
},
failure: function(form, action){
//
}
});
}
}
}
您可以将商店数据作为提交表单的参数发送
或使用Ajax.request
在PHP方面,您可以使用$store_data = json_decode($_POST['store_data']);
答案 1 :(得分:1)
如果表格B值是有关记录的详细信息,请扩展模型以包含这些字段,并且不要在网格视图中显示它们。
然后,表单B中的每个更改都会导致更改记录字段,从而导致更新。