动态地在商店中使用额外的参数

时间:2012-08-10 05:51:05

标签: extjs

我有一张表格。在表单中,我使用comboBoxstore

{
    xtype: 'combobox',
    id: 'SubContractor',
    name: 'SubContractor',
    fieldLabel: 'Sub Contractors',
    selectOnFocus: true,
    editable: false,
    displayField: 'FirstName',
    store: 'jsonGetSubContractorsList',
    typeAhead: true,
    allowBlank: false,
    typeAheadDelay: 20,
    valueField: 'SubContractID',
    width: 440,
    labelWidth: 229
}

在商店中,在代理中我有静态extraParams,它正在运行。

proxy: {              
    type: 'ajax',
    url: '/admin/contract/subcontractors/jsonsubcontractorslist',
    extraParams: {
        cid : 34
    },
    reader: {
        type: 'json',
        root: 'data'
    }
},

但是我不知道如何动态地将合同ID发送到我的商店。

5 个答案:

答案 0 :(得分:21)

store.getProxy().extraParams = {
    foo: 'bar'
};
store.load();

答案 1 :(得分:9)

对于extjs4,它更确切地说:

store.load({
    params:{
        'foo1': bar1,
        'foo2': bar2
    } 
});

答案 2 :(得分:2)

试试这个:

  .
  . 
  proxy: {
    type: 'ajax',
    api: {
        create: CONTEXT_PATH + '/mvc/odon/create', 
        read: CONTEXT_PATH + '/mvc/odon/list',
        update: CONTEXT_PATH + '/mvc/odon/update',
        destroy: CONTEXT_PATH + '/mvc/odon/delete'
    },
    .
    .

传递参数:

 var storeDiagnostico= down('gridpanel').getStore();//Ext.create('store.odont.DStore');
        storeDiagnostico.getProxy().setExtraParam("idOdontologia", value);
        storeDiagnostico.load();

答案 3 :(得分:1)

在Chrome和FF中,即使这样也可以:

store.proxy.extraParams.foo= 'bar';

但是在IE8中(个人有这个问题) 得到了Evan提到的方式

store.proxy.extraParams = {foo: 'bar'};

Check this...

答案 4 :(得分:0)

对不起伙计们,

我花了更多时间来了解所有可用的选项和不同的选项。关于这个问题的答案太多了。我已经对它们进行了总结,并希望答案可以帮到某些人。

创建商店时(Ext JS 6.x.x中支持,可能在早期版本中):

var store = Ext.create('YourStore', {
    listeners: {
        // Fires before a request is made. op is an Ext.data.Operation object
        beforeload:function(store,op){
            // Set request parameters (without overriding other parameters)
            op.setParams(Ext.apply(op.getParams()||{},{
                par1:'value'
            }));
        },
        ... 

定义商店的代理时。自Ext JS 4.x.x以来支持:

proxy: {
    type: 'ajax',
    url: 'rest/dse',
    extraParams: {
        par1: 'value'
    }

注意:在这种情况下,会为多个后续查询发送参数!

明确加载数据时。所有版本的Ext JS都支持(自3.x.x起):

store.load({
    params: { par1: "value" }
});

注意:不需要将par1放在''或“”中。

替代子选项,它使用对代理及其extraParams选项的访问:

store.getProxy().extraParams = {
    par1: 'value'
};
store.load();

小心这一点。此参数将发送给多个后续查询!

创建商店时。仅在Ext JS 3.x版本中支持。

var genres1 = new Ext.data.Store({
    baseParams: {
        param1: 'value1',
        param2: 'value2'
    },
    // ...