Отображать только активные элементы в выпадающем списке ExtJs - PullRequest
0 голосов
/ 04 октября 2018

Данные из моего магазина выглядят так:

responseText:
"insurance" : [{
        "insurance_id" : "1",
        "insurance_companyName" : "Nas Administrative Services",
        "insurance_status" : "1"
    }, {
        "insurance_id" : "2",
        "insurance_companyName" : "Abu Dhabi National Insurance Company",
        "insurance_status" : "0"
    }
]

Я передаю эти данные в комбинированный список.

              {
                xtype:'combobox',
                name:'network_comapanyId',
                fieldLabel: 'Insurance Company',
                displayField: 'insurance_companyName',
                valueField: 'insurance_id',                                     
                store: insuranceStore,
                allowBlank: false,
                padding: '2 2 2 2',
                width: 300, 
                queryMode : 'local'
            }, 

Показывает данные, но я просто хочуотображать только элементы с 'insurance_status : 1'.

Я использую те же данные магазина на других страницах, поэтому я не могу обновить свой магазин.Есть ли решение для отображения только активных элементов ???

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Вот еще один способ фильтрации:

var myStore = Ext.create('Ext.data.Store', {
     model: 'User',
     storeId:'userStore',
     autoLoad: true,
     load:function(){
        Ext.Ajax.request({
        url: '/rmwb/resources/js/app/infoBar/data/data.json',
        timeout: 60000,
        method: 'GET',
        scope: this,
        success: function(resp) {
            console.log(resp.responseText);
            var store = Ext.data.StoreManager.lookup('userStore');
            var data = Ext.JSON.decode(resp.responseText);
            var filteredData = data.insurance.filter(instance => instance["insurance_status"]==1);
            store.loadData(filteredData), true);
        },
        failure: function(resp, opts) {


        },
        callback: function(options, success, resp) {
        }
        });
     }
 });
0 голосов
/ 04 октября 2018

Лучше всего добавить слушателя с расширением события и отфильтровать хранилище в нем.Я обновил ваш код, добавив соответствующий код.Пожалуйста, найдите его ниже:

{
    xtype:'combobox',
    name:'network_comapanyId',
    fieldLabel: 'Insurance Company',
    displayField: 'insurance_companyName',
    valueField: 'insurance_id',                                     
    store: insuranceStore,
    allowBlank: false,
    padding: '2 2 2 2',
    width: 300, 
    queryMode : 'local',
    listeners: {
        expand : function(combo, eOpts){
            combo.store.filter('insurance_status',1);
        }
    }
}
0 голосов
/ 04 октября 2018

Вы можете добавить фильтр в свой магазин. Вот пример Filldle

Ext.create('Ext.form.Panel', {
title: 'FOrm',
width: 400,
height: 200,
renderTo: Ext.getBody(),
items: [{
    xtype: 'combobox',
    reference: 'states',
    publishes: 'value',
    fieldLabel: 'Select State',
    displayField: 'displayField',
    anchor: '-15',
    store: {
        fields: ['valueField', 'displayField', 'fieldStatus'],
        filters: [{
            property: 'fieldStatus',
            value: 1
        }],
        data: [
            ['1', 'MyDisplayValueFor1', 1],
            ['2', 'MyDisplayValueFor2', 0],
            ['3', 'MyDisplayValueFor3', 1]
        ]
    }
}]
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...