2011-08-05 56 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);