ExtJs ComboBox的唯一值

时间:2011-08-05 06:45:42

标签: extjs combobox

我有一个包含来自JsonStore的数据的ComboBox。

数据样本如下:

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

如果我为我的ComboBox使用“Fiume”列,我有两个条目“Tevere”。有没有办法填充ComboBox并只显示唯一值?

非常感谢

2 个答案:

答案 0 :(得分:2)

好的,所以我不建议过滤重复项,而是重新定义从json获取的数据。我猜你也会使用其他组合框的“comune”数据,所以通过过滤重复项,“fiume”和“comune”之间的唯一联系是通过名称搜索。

我建议你将数据重新划分为

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 :(得分: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);