J'ai un formulaire. Dans le formulaire, j'utilise une comboBox
avec une 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
}
En magasin, dans le proxy, j'ai extraParams
statique, ça marche.
proxy: {
type: 'ajax',
url: '/admin/contract/subcontractors/jsonsubcontractorslist',
extraParams: {
cid : 34
},
reader: {
type: 'json',
root: 'data'
}
},
Mais je ne comprends pas comment envoyer l'ID de contrat à mon magasin de manière dynamique.
store.getProxy().extraParams = {
foo: 'bar'
};
store.load();
Pour extjs4, c'est plutôt:
store.load({
params:{
'foo1': bar1,
'foo2': bar2
}
});
Essaye ça:
.
.
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'
},
.
.
Passer le paramètre:
var storeDiagnostico= down('gridpanel').getStore();//Ext.create('store.odont.DStore');
storeDiagnostico.getProxy().setExtraParam("idOdontologia", value);
storeDiagnostico.load();
Dans Chrome et FF, même cela fonctionnera:
store.proxy.extraParams.foo= 'bar';
Mais dans IE8 (personnellement ce problème), A dû le faire comme mentionné par Evan
store.proxy.extraParams = {foo: 'bar'};
Désolé les gars,
J'ai passé plus de temps à comprendre toutes les options disponibles et les différentes. Trop de réponses à ce problème. Je les ai résumées et j'espère que la réponse aidera quelqu'un.
Lorsque vous créez un magasin (pris en charge par Ext JS 6.x.x, probablement dans des versions antérieures):
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'
}));
},
...
Lorsque vous définissez un proxy d'un magasin. Pris en charge depuis Ext JS 4.x.x:
proxy: {
type: 'ajax',
url: 'rest/dse',
extraParams: {
par1: 'value'
}
Remarque: Les paramètres sont envoyés pour plusieurs requêtes ultérieures dans ce cas!
Lorsque vous chargez des données explicitement. Pris en charge dans toutes les versions de Ext JS (depuis 3.x.x):
store.load({
params: { par1: "value" }
});
Note: il n’est pas nécessaire de mettre par1
à l’intérieur de ‘’ ou ''.
Autre sous-option, qui utilise l'accès au proxy et son option extraParams:
store.getProxy().extraParams = {
par1: 'value'
};
store.load();
Sois prudent avec ça. Ce paramètre est envoyé pour plusieurs requêtes ultérieures!
Lorsque vous créez un magasin. Pris en charge uniquement dans la version 3.x Ext JS.
var genres1 = new Ext.data.Store({
baseParams: {
param1: 'value1',
param2: 'value2'
},
// ...