单击父级时检查树的子节点[ExtJS]

tis*_*mon 9 tree extjs extjs3

我想知道如何在点击ExtJs中的特定节点时检查树的兄弟节点.

我为每个节点都给了id,我可以访问一个被点击的节点的id.那么我该如何继续自动检查子节点?

有人请帮帮我..

Ste*_*rig 7

// or any other way of getting hands on the node you want to work with
var node = treePanel.getNodeById('your-id');
node.eachChild(function(n) {
    n.getUI().toggleCheck(true);
});
Run Code Online (Sandbox Code Playgroud)

如果你想让它在当前节点的整个子树上工作,你将不得不做一些递归.

更集成一点:

treePanel.on('checkchange', function(node, checked) {
    node.eachChild(function(n) {
        n.getUI().toggleCheck(checked);
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 不适用于较新的API版本.成功了http://stackoverflow.com/questions/6579769/automatically-check-uncheck-all-subtree-nodes-in-extjs-tree-when-certain-node-ge (2认同)
  • 因此,如果您不扩展子节点,则不会加载它们.因此,当您调用checkchange时,它只会检查已加载的子节点.我最终做的是添加node.expand(true); 在node.eachChild之前,它会扩展所有节点,然后将它们全部检查. (2认同)

小智 5

function nodeCheck(node) {
    node.eachChild(function(n) {
        if(n.hasChildNodes())
            nodeCheck(n)
        n.getUI().toggleCheck(false);
    });
}
var node = (tree.getSelectionModel().getSelectedNode()) ? tree.getSelectionModel().getSelectedNode() : tree.root;
if(node) nodeCheck(node);
Run Code Online (Sandbox Code Playgroud)

这对我来说很有效 ;)