Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅显示在ExtJS 3.x中从外部JSON填充的列_Javascript_Json_Extjs_Extjs3 - Fatal编程技术网

Javascript 仅显示在ExtJS 3.x中从外部JSON填充的列

Javascript 仅显示在ExtJS 3.x中从外部JSON填充的列,javascript,json,extjs,extjs3,Javascript,Json,Extjs,Extjs3,我正在解析ExtJS中的外部JSON源代码,并希望在ExtJS网格中显示数据。 这已经非常有效了 有一组最多的字段是可预测的,但在大多数情况下,JSON中的一些字段是空的/不是空的。如果某个字段根本没有填充,则不应将其隐藏 在ExtJS 3.x中是否有动态隐藏此功能 到目前为止,我的代码是: var store = new Ext.data.JsonStore({ url : '/data/all.json', storeId : 'mainStore', fie

我正在解析ExtJS中的外部JSON源代码,并希望在ExtJS网格中显示数据。 这已经非常有效了

有一组最多的字段是可预测的,但在大多数情况下,JSON中的一些字段是空的/不是空的。如果某个字段根本没有填充,则不应将其隐藏

在ExtJS 3.x中是否有动态隐藏此功能

到目前为止,我的代码是:

var store = new Ext.data.JsonStore({
    url     : '/data/all.json',
    storeId : 'mainStore',
    fields  : ['name', 'company', 'country']
});
store.load()


var columns = [];
    var colModel = new Ext.grid.ColumnModel([
        {header: 'Name', sortable: true, dataIndex: 'name', filterable: true, hidden: false, filter: {type: 'string'}},
        {header: 'Company', sortable: true, dataIndex: 'company', filterable: true, hidden: false, filter: {type: 'string'}},
        {header: 'Country', sortable: true, dataIndex: 'country', filterable: true, hidden: false, filter: {type: 'string'}},

    ]);
我的JSON可能看起来像:

这将显示所有字段

[ {"name": "Jon Doe", "company": "ACME Inc.", "country": "Mexico"},
{"name" : "Jane Doe", "company" : "ACME Ltd", "country" : "USA"}]
[ {"name": "Jon Doe", "company": "ACME Inc."},
{"name" : "Jane Doe", "company" : "ACME Ltd", "country" : "USA"}]
这应该只显示名称和公司

[ {"name": "Jon Doe", "company": "ACME Inc."},
{"name" : "Jane Doe", "company" : "ACME Ltd"}]
这将再次显示所有字段

[ {"name": "Jon Doe", "company": "ACME Inc.", "country": "Mexico"},
{"name" : "Jane Doe", "company" : "ACME Ltd", "country" : "USA"}]
[ {"name": "Jon Doe", "company": "ACME Inc."},
{"name" : "Jane Doe", "company" : "ACME Ltd", "country" : "USA"}]

非常感谢你的帮助

您可以创建一个计算数据并返回布尔值的函数

var showOrHideColumns = function(columnName) {
    var records = store.getRange(),
        hidden = false;

    Ext.each(records, function(itm, idx) {
        if (!itm.get(columnName)) {
            hidden = true;
            break;
        }
    });

    return hidden;
};
并在标题中使用上述函数。您可能希望在代码中检查方法的范围

{ header: 'Name', hidden: showOrHideColumns }
注:以上代码未经测试