3

でチェックされているすべてのノードのチェックを解除する「リセット」メソッドが必要Ext.tree.TreePanelです。

4

4 に答える 4

7
tree.getRootNode().cascade(function(n) {
    var ui = n.getUI();
    ui.toggleCheck(false);
});

ここにあるように: http://www.sencha.com/forum/showthread.php?12888-solved-programatically-unchecking-checked-tree-nodes&p=62845#post62845

于 2011-01-28T21:10:39.243 に答える
2

Extjs4.0.7で動作する他の回答のいずれかを取得できませんでした。また、「カスケード」メソッドの使用は、非推奨であるという警告を発行しました。代わりに「cascadeBy」を使用することをお勧めします。メソッド名以外に、メソッドシグネチャの違いを見つけることができませんでした(同じ引数、これ、動作)。

しかし、私はうまくいったこのコードを見つけることができました:

{ 
    xtype: 'button', 
    text: 'Deselect All',
    listeners:{
        click: function(){

            var tree = Ext.ComponentQuery.query( 'treepanel[itemId=user_flags_tree]')[0];
            tree.getRootNode().cascadeBy(function(){

                this.set( 'checked', false );

            });

        }
    }
}

この投稿に感謝します: http ://www.sencha.com/forum/showthread.php?149627-Programmaticaly-check-uncheck-checkboxes-in-the-Tree-panel

于 2012-04-18T17:59:26.910 に答える
2

以下のようなメソッドを見つけましたが、「ケースケード」メソッドがうまく機能していないようです。チェックされているすべての子のチェックを解除するには、「リセット」を数回呼び出す必要があります。

reset: function (){
            startNode = this.root;
            var f = function () {
                if (this.attributes.checked) {
                    this.attributes.checked = false;
                    this.getUI().toggleCheck(false);
                }
            };
            startNode.cascade(f);
        }
于 2010-12-16T02:27:04.990 に答える