更新网格时传递extraParams的正确方法是什么?

时间:2014-05-07 19:29:52

标签: extjs

网格具有可编辑的行,连接到具有代理的商店。 它使用api例如。

proxy: {
            type: 'ajax',
            api: {
                create:  'dm/acct/new.php',
                read:    'dm/acct/read.php',
                update:  'dm/acct/update.php',
                destroy: 'dm/acct/rm.php'
            },
            extraParams: {
                sess: 2345
            },

如果我将extraParms添加到商店的代理,例如{abc:123}如上所示,当我来编辑网格上的字段时,该细节伴随着服务器上具有定义值的记录。我可以在read.php中检查它。

但是,为了测试,我尝试用应用程序级别var替换abc,例如

{ABC:RPA.app.A_GLOBAL_VAR}

结果

未捕获的TypeError:无法读取未定义的属性'A_GLOBAL_VAR' - 这让我感到惊讶,因为var在应用程序级别声明,我认为它将是作用域并且可用。此错误导致应用程序无法运行。

我已经开始工作,但我不喜欢我的方法,因为我认为它使用了错误的事件而且我找不到更合适的事件。

在网格'单元格dblClick事件中,我有:

var sto = Ext.getCmp('acc_grid').getStore();
var proxy= sto.getProxy();
proxy.setExtraParam('abc', somevar );

我肯定得到了abc:somvar服务器端的价值 - 我想要的也是如此。我只是认为这是糟糕的设计/错误事件,并想知道在可编辑网格上更新时是否有更好的方法将额外的参数附加到记录中?我已经看了其他的例子,但没有偶然发现我能够与之相关的一个例子。

非常感谢

凯文

1 个答案:

答案 0 :(得分:1)

收听CellEditor插件edit事件,而不是单元格dblclick ......

http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.grid.plugin.CellEditing

设置单元格编辑插件时...

 plugins: [
        Ext.create('Ext.grid.plugin.CellEditing', {
            clicksToEdit: 1,
            listeners:{
                edit:function(){ doSomething }
            }
        })
    ],
相关问题