2012-08-10 12 views
10

Ich habe ein Formular. In der Form verwende ich eine comboBox mit einer store.Verwenden Sie zusätzliche Parameter im Laden dynamisch

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

im Speicher, in Proxy-I statische extraParams haben, es funktioniert.

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

Aber ich bekomme nicht, wie man die Vertrags-ID dynamisch an meinen Laden schickt.

Antwort

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

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

+1

Wo soll ich diesen Code schreiben? Bitte helfe mir – Navdeep

+2

ich würde sogar sagen, store.getProxy(). SetExtraParam ({...}) –

7

Für extjs4, es ist eher:

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

Dies ist eine ausgezeichnete Antwort. – MarthyM

1

In Chrome und FF auch dies funktioniert:

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

Aber in IE8 (hatte dieses Problem persönlich) hat es zu tun die von Evan erwähnte Weise

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

Check this...

1

Versuchen Sie folgendes:

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

Vorbei an der Parameter:

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

Sorry, Jungs,

ich mehr Zeit zu verstehen, alle verfügbaren Optionen und die verschiedenen ausgegeben haben. Zu viele Antworten zu diesem Problem. Ich habe sie zusammengefasst und hoffe, die Antwort wird jemandem helfen.

Wenn Sie einen Store erstellen (Unterstützt in Ext JS 6.x.x, wahrscheinlich in früheren Versionen):

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

Wenn Sie einen Proxy eines Speichers definieren. Unterstützt seit Ext JS 4.x.x:

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

Hinweis: Die params werden für mehrere nachfolgende Abfragen in diesem Fall gesendet!

Wenn Sie Daten explizit laden. Unterstützt in allen Versionen von Ext JS (seit 3.x.x):

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

Hinweis: ist es nicht zu setzen par1 innerhalb von ‚‘ oder „“ benötigt.

Alternative Unteroption, die den Zugriff auf Proxy und seine extraParams Option verwendet:

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

mit dieser vorsichtig. Dieser Parameter wird für mehrere nachfolgende Abfragen gesendet!

Wenn Sie ein Geschäft erstellen. Wird nur in der Ext JS 3.x Version unterstützt.

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