2012-08-10 13 views
10

Mam formularz. W formularzu używam comboBox z store.dynamicznie wykorzystuj dodatkowe parametry w sklepie

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

W sklepie, w proxy Mam statyczną extraParams, że to działa.

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

Ale nie mam sposobu, aby dynamicznie przesłać identyfikator zamówienia do mojego sklepu.

Odpowiedz

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

lub store.getProxy() extraParams.cid = 34.; –

+1

Gdzie napisać ten kod. Proszę pomóc – Navdeep

+2

Powiedziałbym nawet, store.getProxy(). SetExtraParam ({...}) –

7

Dla extjs4, to raczej:

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

To jest doskonała odpowiedź. – MarthyM

1

W Chrome i FF nawet to będzie działać:

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

Ale w IE8 (miałem ten problem osobiście) to robić sposób opisany przez Evan

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

Check this...

1

Spróbuj tego:

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

Przekazywanie parametru:

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

Sorry chłopaki,

spędziłem więcej czasu, aby zrozumieć wszystkie dostępne opcje i różne. Zbyt wiele odpowiedzi na temat tego problemu. Podsumowałem je i mam nadzieję, że odpowiedź pomoże komuś.

Po utworzeniu sklepu (obsługiwane w Ext JS 6.x.x, prawdopodobnie we wcześniejszych wersjach):

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

Podczas definiowania pełnomocnik sklepie. Obsługiwane ponieważ Ext ​​JS 4.x.x:

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

Uwaga: params są wysyłane do wielu kolejnych zapytań w tej sprawie!

Podczas jawnego ładowania danych. Dostępna we wszystkich wersjach Ext JS (od 3.x.x):

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

Uwaga: to nie jest potrzebne, aby umieścić par1 od wewnątrz „” lub „”.

alternatywna podwariant, który korzysta z dostępu do serwera proxy i jego opcji extraParams:

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

Bądź ostrożny z tym. Ten parametr jest wysyłany dla wielu kolejnych zapytań!

Po utworzeniu sklepu. Obsługiwane tylko w wersji Ext JS 3.x.

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