首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅显示组合框ExtJs中的活动项

仅显示组合框ExtJs中的活动项
EN

Stack Overflow用户
提问于 2018-10-04 05:41:35
回答 3查看 141关注 0票数 0

我店里的数据如下:

代码语言:javascript
复制
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"
    }
]

我将把这些数据传递给一个组合框。

代码语言:javascript
复制
              {
                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'.显示项目

我在其他页面中使用相同的存储数据,所以我无法更新我的存储。是否有任何解决方案仅显示活动项?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-04 06:25:27

您可以在您的商店中添加一个过滤器--这里是示例灌装

代码语言:javascript
复制
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]
        ]
    }
}]
});
票数 0
EN

Stack Overflow用户

发布于 2018-10-04 07:13:49

下面是另一种过滤方法:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-10-04 14:06:20

使用展开事件添加侦听器并在其中筛选存储将是一种更好的方法。我已经通过添加相关代码更新了您的代码。请在下面找到:

代码语言:javascript
复制
{
    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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52639729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档