ExtJs ComboBox уникальные значения - PullRequest
4 голосов
/ 05 августа 2011

У меня есть ComboBox с данными, поступающими из JsonStore.

Вот пример данных:

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

Если я использую столбец "Fiume" для моего ComboBox, у меня естьполучил 2 записи "Тевере".Есть ли способ заполнить ComboBox и показывать только уникальные значения?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Хорошо, поэтому я бы не советовал фильтровать дубликаты, а переопределить данные, которые вы получаете от 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 голос
/ 11 августа 2011

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...