有没有办法在ExtJS4中禁用treeview的节点

有没有办法在ExtJS4中禁用treeview的节点,extjs4,treeview,Extjs4,Treeview,我的目的是禁用西部地区treeview的某些节点。 下面的代码片段显示了这一点: root: { expanded: true, id: 'treeview1', children: [ {"text": "Make Copy", "leaf": true, id:'HS1', "**disabled**": true,

我的目的是禁用西部地区treeview的某些节点。

下面的代码片段显示了这一点:

root: {
expanded: true,       
id: 'treeview1',
    children: [
               {"text": "Make Copy", 
                "leaf": true, 
                id:'HS1', 
                "**disabled**": true,
                "**hidden**" : true}
              ]
}
为什么禁用和隐藏属性在ExtJS4中不起作用


是否有任何插件来实现它

树面板中的节点是
Ext.data.NodeInterface
对象

它没有禁用或隐藏的属性,但它有
cls
,使用该属性,您可以向其添加一个
display:none
样式,该样式隐藏节点

例如:

Ext.create('Ext.tree.Panel', {
    (...)
    listeners: {
        beforeitemclick: function(treeview, record, item, index, e, eOpts) {
            if (record.raw && record.raw.disabled == true) {                
                return false;
            }
            return true;
        },
        itemclick: function(treeview, record, item, index, e, eOpts) {
            console.log(record, item);
        }
    }
});
  • 在css文件中:

  • .x-hidden-node {display: none !important;}
  • 在extjs代码中:

  • root: {
        expanded: true,
        id: 'treeview1',
        children: [{
            text: 'Make Copy', 
            leaf: true, 
            id:'HS1',
            cls : 'x-hidden-node'
        }]
    }
    对于禁用的功能,可以使用treepanel的“beforeitemclick事件”手动读取禁用的属性

    例如:

    Ext.create('Ext.tree.Panel', {
        (...)
        listeners: {
            beforeitemclick: function(treeview, record, item, index, e, eOpts) {
                if (record.raw && record.raw.disabled == true) {                
                    return false;
                }
                return true;
            },
            itemclick: function(treeview, record, item, index, e, eOpts) {
                console.log(record, item);
            }
        }
    });

    如果treeview的子项不是复选框,则上述代码可以正常工作。如果treeview的子元素是checkbox,那么在这种情况下,我们需要将xtype of children元素作为checkbox删除以使其工作。下面是孩子们的样本

    children: [{
            "xtype": "checkbox",// remove
            "checked":"false", //remove
            "expanded": "false",
            "leaf": "true",
            "qtip": "Make Copy",
            "text": "Make Copy",
            "disabled": "true",
            "cls" : "x-hidden-node"
          }]
    

    如何解决禁用的属性。。。cls将使节点隐藏。我想删除点击属性以及???@Praveen NC,答案修改,我希望它将帮助您完美工作。我无法读取侦听器中的disabled属性。谢谢你宝贵的时间。我想通过电脑递给你一支雪茄,得到这个很棒的答案……真的救了我。