如何在创建新项目或更新现有项目时从商店向服务器端发送其他参数

时间:2012-06-30 09:39:22

标签: extjs extjs4 extjs4.1

我有一个包含一些记录的网格面板。但是这个网格面板的元素是孩子。因此,当我在网格中创建新记录或更新现有记录时,我想将另外的参数发送到服务器端作为父ID(父表是表的父表)。我正在使用直营店。

我知道,有远程过滤器,但似乎它们只是在读取操作时发送,而不是在创建或更新时发送。

3 个答案:

答案 0 :(得分:4)

如果要发送额外参数,请使用代理

上的extraParams属性

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.proxy.Server-cfg-extraParams

答案 1 :(得分:2)

发送extraParams不仅仅是阅读操作(创建,破坏,更新)

我延长了

  

Ext.data.proxy.Direct

并覆盖

  

doRequest

它就像一个魅力。

使用ExtJs 4.1.1

原始代码是:

if (operation.action == 'read') {
            // We need to pass params
            method = fn.directCfg.method;
            args = method.getArgs(params, me.paramOrder, me.paramsAsHash);
        } else {
            args.push(request.jsonData);
        }

我把它改为:

    method = fn.directCfg.method;
    args = method.getArgs(params, me.paramOrder, me.paramsAsHash);

    if(operation.action !== 'read'){
         args.push(request.jsonData);
    }

从这里接受了这个想法https://www.sencha.com/forum/showthread.php?282879-ExtraParams-Store-Create

注意:您的商店将拥有您在所创建的类的别名上放置的代理。您的别名将类似于alias : 'proxy.mycompanydirect',那么您的商店将拥有代理类型'mycompanydirect'

答案 2 :(得分:0)

extraParams

  

Object4将包含在每个请求中的额外参数。   具有相同名称的参数的个别请求将覆盖这些请求   当他们发生冲突时参与其中。

var store = Ext.create('Ext.data.Store', {
                  // destroy the store if the grid is destroyed
                  autoDestroy: true,
                  model: 'Plant',
                  proxy: {
                  extraParams: {name: 'dfds'}, // to send extra parmas 
                  ...
                  }
            });