2011-08-05 94 views
4

我有一個ComboBox,其數據來自JsonStore。ExtJs ComboBox唯一值

數據的樣本是這樣的:

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

如果我使用列「阜姆」我的組合框,我有2項「臺伯」。有沒有辦法填充組合框並只顯示唯一值?

非常感謝您

回答

2

好了,我不會建議過濾重複,而是重新定義你是從JSON獲取數據。我想你也會使用其他組合框的「comune」數據,或者通過過濾重複項,「fiume」和「comune」之間的唯一聯繫將通過名稱進行搜索。

我建議你redifine的數據像

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

這只是一個建議,我認爲這將是更易於管理的選擇發生變化。

1

http://jsfiddle.net/KXPQn/希望這會有所幫助。

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);