开发者

ExtJs ComboBox unique values

开发者 https://www.devze.com 2023-03-25 20:59 出处:网络
I have a ComboBox with data coming from a JsonStore. A sample of data is this: var datiCombo = [ {\"Fiume\":\"Chiascio\",\"Comune\":\"Gubbio\"},

I have a ComboBox with data coming from a JsonStore.

A sample of data is this:

var datiCombo = [
        {"Fiume":"Chiascio","Comune":"Gubbio"},
        {"Fiume":"Tevere","Comune":"Perugia"},
 开发者_StackOverflow中文版       {"Fiume":"Tevere","Comune":"Roma"},
];

If I use the column "Fiume" for my ComboBox, I have got 2 entries "Tevere". Is there a way to populate ComboBox and show only unique values?

Thank you very much


Ok, so i wouldn't suggest to filter the duplicates, instead redefine the data you are getting from json. I guess you will also use the "comune" data for other combobox or something so by filtering the duplicates the only bond between the "fiume" and the "comune" will be by searching by the name.

I propose you redifine the data in something like

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

It's just a suggestion, I think it would be more easy to manage a change in selection.


http://jsfiddle.net/KXPQn/ Hope this helps.

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

精彩评论

暂无评论...
验证码 换一张
取 消