2012-08-10 12 views
10

Ho un modulo. Nel modulo, sto usando un comboBox con un store.utilizzare parametri aggiuntivi nello store dinamicamente

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

In negozio, in procura ho statica extraParams, sta funzionando.

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

Ma non capisco, come inviare dinamicamente l'ID contratto al mio negozio.

risposta

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

Oppure store.getProxy(). ExtraParams.cid = 34; –

+1

Dove scrivere questo codice. Si prega di aiutare – Navdeep

+2

direi anche, store.getProxy(). SetExtraParam ({...}) –

7

Per extjs4, è piuttosto:

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

Questa è una risposta eccellente. – MarthyM

1

In Chrome e FF anche questo funzionerà:

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

Ma in IE8 (avuto questo problema personalmente) avuto modo di farlo il modo menzionato da Evan

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

Check this...

1

Prova questo:

. 
    . 
    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' 
    }, 
    . 
    . 

passando il parametro:

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

Scusate ragazzi,

ho speso più tempo per capire tutte le opzioni disponibili e del diverso. Troppe risposte a questo problema Li ho riassunti e spero che la risposta aiuti qualcuno.

Quando si crea un negozio (Supportato in Ext JS 6.x.x, probabilmente nelle versioni precedenti):

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' 
      })); 
     }, 
     ... 

Quando si definisce un proxy di un negozio. Supportato dal Ext JS 4.x.x:

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

Nota: I params vengono inviati per più query successive in questo caso!

Quando si caricano i dati in modo esplicito. Supportato in tutte le versioni di Ext JS (dal 3.x.x):

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

Nota: non è necessario mettere par1 all'interno di ‘’ o “”.

alternativa sub-opzione, che utilizza l'accesso al proxy e l'opzione extraParams:

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

prestare attenzione a questo. Questo parametro viene inviato per più query successive!

Quando si crea un negozio. Supportato solo nella versione Ext JS 3.x.

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