Je pense que j'ai un problème très populaire, mais pas trouvé de réponse pour cela maintenant. :) J'ai obtenu 2 comboboxes similaires - au début je définis ma valeur par id - comboT.setValue("22763");
et il a correctement défini une valeur de texte liée à cet ID. Lors de la seconde reload store (jsonstore), puis définir la valeur - comboC.setValue("3");
Mais ce combo ne définit que l'ID et non la valeur du texte (si j'ouvre la liste je peux voir quelle combo marque correctement la valeur du texte. sélectionnez) valeur texte affiché correctement au combo. Comment résoudre ce problème? Merci.ExtJS: Combobox après magasin de rechargement ne définissez pas de valeur
Répondre
Quelque chose comme cela, la syntaxe peut être légèrement depuis que je fais de la mémoire:
var val = 3;
var store = comboC.getStore();
store.on("load", function() {
comboC.setValue(val);
}):
store.load();
Chargement du magasin est asynchrone, vous pouvez déplacer le réglage de la nouvelle valeur dans le gestionnaire d'événements callback:
de store.load({...})
, parce que sinon, vous Définir la valeur avant que le magasin ne soit chargé
EDIT: pour être complet, un exemple, donc vous avez une version alternative (dans certains ca SES, il est peut-être undesireable pour lier le rappel au magasin lui-même, comme ormuriauga a):
var val = 3;
var store = comboC.getStore();
store.load({
callback: function() {
comboC.setValue(val);
}
});
grand merci à vous. Je comprends maintenant :) –
Un autre exemple sur la façon de définir la valeur de la zone de liste déroulante en recherchant une chaîne dans le magasin de données sous-jacent. J'ai pu coder cela en utilisant les échantillons dans ces réponses en tant que référence:
//The store's data definition must have at least a data.id field defined
set_combobox_value_from_store = function (combobox, valueField, value) {
//Get a reference to the combobox's underlying store
var store = combobox.getStore();
store.load({
callback: function() {
//Find item index in store
var index = store.find(valueField, value, false);
if (index < 0) return;
//Get model data id
var dataId = store.getAt(index).data.Id;
//Set combobox value and fire OnSelect event
combobox.setValueAndFireSelect(dataId);
}
});
Dans ExtJS 4.1 ressemble combo.setValue() fonctionne lorsque le type de ValueField dans le modèle est « string ». c'était mon code
Ext.define('Model.CboObras', {
extend: 'Ext.data.Model',
idProperty: 'co_obra',
fields: [{
name: 'co_obra',
type: 'int'
}, {
name: 'nb_obra',
type: 'string'
}]
});
cela ne fonctionne pas.
Quand j'ai changé mon code à ceci:
Ext.define('Model.CboObras', {
extend: 'Ext.data.Model',
idProperty: 'co_obra',
fields: [{
name: 'co_obra',
type: 'string'
}, {
name: 'nb_obra',
type: 'string'
}]
});
Après que j'utilise ceci:
var store = comboC.getStore();
store.load({
callback: function() {
comboC.setValue(val);
}
});
cela fonctionne maintenant comme un charme!
wow. Ça marche! ammoQ dis-moi pourquoi. Merci beaucoup les gars! –
Excellente idée, merci beaucoup – Ramanavel