2012-08-10 12 views
10

Tengo un formulario. En la forma, estoy usando un comboBox con un store.use params adicionales en la tienda de forma dinámica

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

En la tienda, en la representación que tengo estática extraParams, que está funcionando.

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

Pero no entiendo, cómo enviar la identificación del contrato a mi tienda de forma dinámica.

Respuesta

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

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

+1

Dónde escribir este código. Por favor, ayuda – Navdeep

+2

Incluso diría, store.getProxy(). SetExtraParam ({...}) –

7

Para extjs4, es bastante:

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

Esta es una excelente respuesta. – MarthyM

1

En Chrome y FF, incluso esto funcionará:

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

Pero en IE8 (tenido este problema personalmente) tiene que hacerlo el camino mencionado por Evan

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

Check this...

1

Prueba esto:

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

pasar el parámetro:

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

Lo siento chicos,

He pasado más tiempo para entender todas las opciones disponibles y lo diferente. Demasiadas respuestas sobre este problema. Los resumí y espero que la respuesta ayude a alguien.

Al crear una tienda (Apoyado en Ext JS 6.x.x, probablemente en versiones anteriores):

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

Al definir un proxy de una tienda. Apoyado desde Ext JS 4.x.x:

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

Nota: Los parametros son enviados a varias consultas subsiguientes en este caso!

Cuando carga datos explícitamente. Apoyado en todas las versiones de Ext JS (desde 3.x.x):

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

Nota: no es necesario para poner par1 dentro de ‘’ o “”.

sub-opción alternativa, que utiliza el acceso al poder y su opción extraParams:

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

tener cuidado con esto. ¡Este parámetro se envía para consultas posteriores múltiples!

Al crear una tienda. Solo se admite en la versión Ext JS 3.x.

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