2011-08-05 2 views
4

J'ai un ComboBox avec des données provenant d'un JSONStore.ExtJs ComboBox Valeurs uniques

Un échantillon de données est la suivante:

var datiCombo = [ 
     {"Fiume":"Chiascio","Comune":"Gubbio"}, 
     {"Fiume":"Tevere","Comune":"Perugia"}, 
     {"Fiume":"Tevere","Comune":"Roma"}, 
]; 

Si j'utilise la colonne "Fiume" pour mon ComboBox, j'ai eu 2 entrées "Tevere". Existe-t-il un moyen de remplir ComboBox et afficher uniquement des valeurs uniques?

Merci beaucoup

Répondre

2

Ok, donc je ne voudrais pas suggérer de filtrer les doublons, au lieu de redéfinir les données que vous obtenez de JSON. Je suppose que vous utiliserez également les données "comune" pour d'autres combobox ou quelque chose du genre en filtrant les doublons, le seul lien entre le "fiume" et le "comune" sera en cherchant par le nom.

Je vous propose redifine les données dans quelque chose comme

var fiume = [{"id":1,"name":"chiascio"}, 
      {"id":2,"name":"Tevere"}]; 
var comune =[{"name":"Gubbio", "fiumeId":1}, 
      {"name":"Perugia", "fiumeId":2}, 
      {"name":"Roma", "fiumeId":2)]; 

Il est juste une suggestion, je pense qu'il serait plus facile de gérer un changement de sélection.

1

http://jsfiddle.net/KXPQn/ Espérons que cela aide.

var datiCombo = [ 
     {"Fiume":"Chiascio","Comune":"Gubbio"}, 
     {"Fiume":"Tevere","Comune":"Perugia"}, 
     {"Fiume":"Tevere","Comune":"Roma"}, 
]; 

contains = function(array, entry){ 
    for (var j = 0; j<array.length; j++){ 
     if (array[j]["Fiume"]==entry){ 
      return true; 
     };  
    }; 
    return false; 
} 

var comboData = []; 

for (var i = 0; i < datiCombo.length; i++){ 
    if (contains(comboData, datiCombo[i]["Fiume"])== false){ 
     comboData.push(datiCombo[i]);   
    }; 
}; 
console.log(comboData);