Je voudrais une méthode 'reset' pour décocher tous les noeuds vérifiés dans Ext.tree.TreePanel
.Comment désélectionner tous les nœuds d'arborescence dans Ext.tree.TreePanel?
Répondre
J'ai trouvé une méthode comme ci-dessous, mais semble la méthode « casecade » ne fonctionnait bien, je dois appeler « reset » plusieurs fois débridé tous les enfants cochés:
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);
});
Comme trouvé ici: http://www.sencha.com/forum/showthread.php?12888-solved-programatically-unchecking-checked-tree-nodes&p=62845#post62845
Je ne pouvais pas obtenir l'une des autres réponses à travailler avec Extjs 4.0.7. En outre, l'utilisation de la méthode "cascade" a émis un avertissement selon lequel elle est déconseillée. Il a recommandé d'utiliser "cascadeBy" à la place. Autre que le nom de la méthode, je n'ai pas pu trouver de différence dans la signature de la méthode (mêmes arguments, ceci, comportement).
Cependant, j'ai pu trouver ce code qui a fonctionné:
{
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);
});
}
}
}
Merci à ce poste: 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);
}
vraiment, cascadeBy (function() {this.set (« checked ', faux);}); fait le tour! – martyglaubitz