10

我有一个表格。在表格中,我使用 acomboBox和 a store

{
    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
}

在商店中,在代理中我有 static extraParams,它正在工作。

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

但我不明白,如何将合同 ID 动态发送到我的商店。

4

5 回答 5

22
store.getProxy().extraParams = {
    foo: 'bar'
};
store.load();
于 2012-08-10T06:06:56.047 回答
10

对于 extjs4,它是:

store.load({
    params:{
        'foo1': bar1,
        'foo2': bar2
    } 
});
于 2013-05-31T14:28:28.623 回答
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();
于 2013-08-16T20:14:21.473 回答
1

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

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

但是在 IE8 中(个人有这个问题)必须按照 Evan 提到的方式来做

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

检查这个...

于 2013-06-12T19:43:32.360 回答
1

对不起大家,

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

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

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.xx 开始支持:

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

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

当您显式加载数据时。所有版本的 Ext JS 都支持(从 3.xx 开始):

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'
    },
    // ...
于 2017-10-18T16:23:19.330 回答