J'ai un problème (peut-être que ce sera ma faute d'utiliser incorrectement ExtJs, j'espère que je le fais) en utilisant ExtJs pour faire un combo en cascade dans un formulaire. Telle est la situation:ExtJs en cascade-Combos Problème
- J'ai 3 combos, zones, régions, villes
- Lorsque je clique sur l'un d'eux dans l'ordre, celui lié sera mis à jour faire une demande ajax en utilisant JSON comme format de données (même si je pense qu'il est pas utile, la séquence est la séquence normale des zones -> régions -> Villes)
- même si ce n'est pas si important, je suis sur un ASP.NET MVC back-end
Le problème se pose lorsque, comme première opération, je clique d'abord sur un descendant, puis sur le parent, par exemple, si je il suffit d'ouvrir avant les régions, puis en ouvrant des zones et en en sélectionnant une, j'espère que cela remplira bien les régions ... mais rien ne se passe. Dans ce cas aussi, la requête ajax est faite correctement et les données Json résultantes sont renvoyées comme si elles étaient retournées "si je respecte l'ordre des clics (Zones -> Régions)". Permettez-moi de dire que si, lorsque j'entre dans la page la première fois et que je fais un ordre de clic normal, tout va bien, mais quand je change l'ordre des clics, comme je l'ai déjà dit, ça ne marchera jamais plus.
Le code que nous employons pour ce qui est:
var RegionsStore = new Ext.data.JsonStore({
url:'/mypath/blabla',
fields:['Value','Text']
});
Ext.onReady(function() {
Ext.getCmp('ext-Area').on('select', function(sender, item) {
var target = Ext.getCmp('ext-Regions');
target.setDisabled(true);
target.setValue('');
target.store.removeAll();
target.displayField = 'Text';
target.valueField = 'Value';
target.store = RegionsStore;
target.store.reload({
params: {
data: 'regions',
discriminator: 'area',
value: sender.getValue()
}
});
target.setDisabled(false);
});
});
Merci d'avance pour vos suggestions!
Votre solution ne fonctionne toujours pas ... – Hoghweed
Avez-vous le mettre après cela? target.store.reload ({ params: { données: 'régions', discriminateur: 'Zone', valeur: sender.getValue() } target.store.clearFilter(); – Thevs
Et vous avez probablement Vous devez également définir la valeur de combo cible sur '' (chaîne vide). – Thevs