EXTJS 5 在树状网格中隐藏节点

EXTJS 5 hide node in treegrid

有没有办法在树状网格中隐藏节点(父节点或子节点)?我将可见的 属性 设置为 false 但它并没有消失:(这里是 fiddle link: https://fiddle.sencha.com/#fiddle/jl1)

var tree = Ext.create('Ext.tree.Panel', {
    renderTo: Ext.getBody(),
    title: 'TreeGrid',
    width: 300,
    height: 250,
    fields: ['name', 'description'],
    columns: [{
        xtype: 'treecolumn',
        text: 'Name',
        dataIndex: 'name',
        width: 150,
        sortable: true
    }, {
        text: 'Description',
        dataIndex: 'description',
        flex: 1,
        sortable: true
    }],
    root: {
        expanded: true,
        children: [{
            name: 'Group 1',
            expanded: true,
            children: [{
                name: 'Child 1.1',
                description: 'Description 1.1',
                leaf: true
            },{
                name: 'Child 1.2',
                description: 'Description 1.2',
                leaf: true
            }]
        }, {
            name: 'Group 2',
            expanded: true,
            children: [{
                name: 'Child 2.1',
                description: 'Description 2.1',
                leaf: true
            },{
                name: 'Child 2.2',
                description: 'Description 2.2',
                leaf: true
            }]
        }]
    }
});

var button = Ext.create('Ext.button.Button', {
    renderTo: Ext.getBody(),
    text: 'Remove group 1',
    handler: function() {
        var group1 = tree.getRootNode().childNodes[0];
        group1.set('visible', false);
    }
});

注意:我不想删除节点,我想隐藏它,稍后再显示它(我想这样做是因为 remove/add 树网格上的行为非常错误:S )!

提前致谢:)!

你应该和 tree store 一起工作。使用过滤器从树中隐藏值。

我已经修复了你的 fiddle。 https://fiddle.sencha.com/#fiddle/jl8 我使用 filterBy 方法来修复它。如果函数 returns true 则 Record 被包含到树中,否则被过滤掉。

这里有一些关于该主题的更多文档http://docs.sencha.com/extjs/5.1/5.1.0-apidocs/#!/api/Ext.data.TreeStore