1

想象两种形式和一个网格。表格 A 由组合框组成。这些框显示来自数据库的数据。用户选择组合框,结果是网格存储的新记录。也可以将新值/记录放入组合框中。(无数据库插入)表单 B 由几个文本字段组成。它的一种MasterDetail。Grid 是 Master,Form B 是 Detail。最后,我想在一个请求(ajax)中提交表单 B 和网格存储。在服务器端,我想存储详细数据并将它们与现有记录连接起来,甚至创建新记录并连接它们。我想将该操作运行到事务上下文中。

现在我不知道什么是好的/最佳做法。我尝试使用网格存储的同步方法并将表单(表单 B)值包含为 extraParams。这可行,但有可能在成功请求后我需要使用相同的(未触及的)存储进行另一个请求(仅表单 B 更改),因此我将不得不重置记录状态。(同步仅执行更改)

也许一个简单的 Ext.ajax.request() 可以完成这项工作,但是如何通过商店?我可以添加表单 B 值作为参数,但我不知道如何添加商店?我是否需要自己将每个记录项添加到参数配置中?

信息:服务器端是 php,db 是 mysql

4

2 回答 2

1

如果表单 B 值是有关记录的详细信息,则扩展模型以包含这些字段,并且根本不在网格视图中显示它们。
然后,表单 B 中的每次更改都会导致记录字段发生更改,从而导致更新。

于 2013-04-11T22:47:46.780 回答
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){                           
                             //
                         }
                    });
                }
            }
 }

您可以将商店数据作为提交表单的参数发送,也可以在 PHP 端使用 Ajax.request 来获取商店数据$store_data = json_decode($_POST['store_data']);

于 2013-04-11T18:31:50.340 回答