Ich möchte eine "Reset" -Methode, um alle überprüften Knoten in Ext.tree.TreePanel
deaktivieren.Wie deaktiviert man alle Baumknoten in Ext.tree.TreePanel?
Antwort
fand ich eine Methode, wie unten, scheint aber die ‚casecade‘ Methode funktionierte nicht gut, ich anrufen müssen ‚Reset‘ mehrmals unkontrolliert alle geprüft Kinder:
reset: function(){
startNode = this.root;
var f = function() {
if (this.attributes.checked) {
this.attributes.checked = false;
this.getUI().toggleCheck(false);
}
};
startNode.cascade(f);
}
tree.getRootNode().cascade(function(n) {
var ui = n.getUI();
ui.toggleCheck(false);
});
Wie gefunden hier: http://www.sencha.com/forum/showthread.php?12888-solved-programatically-unchecking-checked-tree-nodes&p=62845#post62845
Ich konnte keine der anderen Antworten mit Extjs 4.0.7 arbeiten. Auch die Verwendung der "Kaskaden" -Methode gab eine Warnung aus, dass sie veraltet ist. Es wurde stattdessen empfohlen, "cascadeBy" zu verwenden. Anders als der Methodenname konnte ich keinen Unterschied in der Methodensignatur finden (gleiche Argumente, dieses Verhalten).
Allerdings konnte ich diesen Code finden, die funktioniert:
{
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);
});
}
}
}
Dank dieser Beitrag: http://www.sencha.com/forum/showthread.php?149627-Programmaticaly-check-uncheck-checkboxes-in-the-Tree-panel
var nodes = treePanel.getView().getNodes();
var records = treePanel.getView().getRecords(nodes);
for (var i = 0; i < records.length; i++) {
records[i].set('checked',true);
}
wirklich, cascadeBy (function() {this.set (‚geprüft ', falsch);}); macht den Trick! – martyglaubitz