EXTJS Combobox pas de la sélection par valueField après développez

J'ai écrit un code qui fonctionne assez bien, mais j'ai un bug étrange
Voici un exemple...


S'IL VOUS PLAÎT REGARDER MES COMBOBOX BUG DE LA VIDÉO


Comme je l'ai dit, cela fonctionne bien à chaque fois datachanged incendies - le droit de l'index est sélectionné et que le displayField est affiché, mais, à chaque fois après que j'ai tapez du texte dans la zone de liste déroulante, plus tard, quand le "datachanged les incendies", il l'habitude d'afficher la displayField. Au lieu de cela, il affiche la valeur de la méthode setValue je me lance.

La chose étrange est que si je ne suis pas toujours le type de texte et modifier la sélection avec la souris il n'y a pas de bug. Enfin, cela n'apparaît que lorsque je tape du texte dans la zone de liste déroulante.

Quelqu'un a entendu parler de ce bug, avez une solution, ou de quelques sages conseils?

Le Code !

Deux banques de données :

ficheDataStore = new Ext.data.Store({
id: 'ficheDataStore',
autoLoad: true,
proxy: new Ext.data.HttpProxy({
url: 'ficheDetail.aspx',      //File to connect to
method: 'GET'
}),
baseParams: { clientId: clientId, Type: 'Fiche' }, //this parameter asks for listing
reader: new Ext.data.JsonReader({   //we tell the datastore where to get his data from
root: 'results'
}, [
{ name: 'GUID', type: 'string', mapping: 'GUID' },
{ name: 'TagClient', type: 'string', mapping: 'TagClient' },
{ name: 'Nom', type: 'string', mapping: 'Nom' },
{ name: 'Compteur', type: 'string', mapping: 'CompteurCommunes' },
{ name: 'CompteurCommunesFacturation', type: 'string', mapping: 'CompteurCommunesFacturation' },
{ name: 'AdresseFacturation', type: 'string', mapping: 'AdresseFacturation' },
{ name: 'Codes', type: 'string', mapping: 'Codes' },
{ name: 'Observations', type: 'string', mapping: 'Observations' },
{ name: 'Adresse', type: 'string', mapping: 'Adresse' }
])
});
communesDataStore = new Ext.data.Store({
autoLoad: true,
proxy: new Ext.data.HttpProxy({ url: 'ficheDetail.aspx?Type=Communes' }),
reader: new Ext.data.JsonReader({ root: 'results' }, [{ name: 'Compteur' }, { name: 'Localisation'}])
});

Qui en retour quelque chose comme ça pour l'
première:

  {results:[{"Nom":"cercle interieur"},{"Observations":""},{"Codes":" "},{"Adresse":"dd"},{"CompteurCommunes"
:"1"},{"TagClient":"3-56"},{"GUID":"443609c6-d064-4676-a492-7baa7b4288d1"},{"AdresseFacturation":""}
,{"CompteurCommunesFacturation":"1"}]}

Pour le dernier :

{"results":[{ "Compteur" : "1","Localisation" : "6200  ST ISIDORE"},{ "Compteur" : "2","Localisation"
: "21340 CHANGE"},{ "Compteur" : "3","Localisation" : "1200  ELOISE"},{ "Compteur" : "4","Localisation"
: "1200  ST GERMAIN SUR RHONE"},{ "Compteur" : "5","Localisation" : "75000 PARIS"},{ "Compteur" : "6"
,"Localisation" : "75001 PARIS 1ER ARRONDISSEMENT"}]}

un Combobox :

 var comb = new Ext.form.ComboBox(
{
store: communesDataStore,
fieldLabel: 'Code postal',
//hiddenName: 'Compteur',
name: 'CompteurCommune',
id: 'CompteurCommunes',
width: 300,
typeAhead: true,
mode: 'local',
minChars: 0,
selecOnFocus: true,
forceSelection: true,
valueField: 'Compteur',
displayField: 'Localisation',
autocomplete: true,
emptyText: 'Selectionnez un code postal',
triggerAction: 'all',
value: ''
});

dans un datachanged cas j'ai mis la nouvelle valeur de la Combobox "CompteurCommunes" :

   ficheDataStore.addListener('datachanged', handleDatachangedEvent);
function handleDatachangedEvent() 
{
try {
comb.setValue(ficheDataStore.getAt(4).data.Compteur);                                                                                 
}
catch (err) { }
}

OriginalL'auteur |