student - dojo taekwondo
Expandir todos los nodos en dijit.Tree (3)
Sí, autoExpand = true (como un parámetro de inicialización para el Árbol).
Si necesita expandir / colapsar dinámicamente, Tree solía tener un método para eso, pero lo saqué. Sin embargo, puede copiarlo desde: http://bugs.dojotoolkit.org/changeset/20529 .
¿Hay una buena manera de expandir / cerrar todos los nodos expandibles en un dijit.Tree
?
Para aquellos que buscan una respuesta, pon esto en tu código de inicialización:
var treeControl = new dijit.Tree({
model: treeModel,
expandAll: function() {
// summary:
// Expand all nodes in the tree
// returns:
// Deferred that fires when all nodes have expanded
var _this = this;
function expand(node) {
_this._expandNode(node);
var childBranches = dojo.filter(node.getChildren() || [], function(node) {
return node.isExpandable;
});
var def = new dojo.Deferred();
defs = dojo.map(childBranches, expand);
}
return expand(this.rootNode);
}
});
Al menos, eso funciona para mí. Y puede hacer lo mismo con collapseAll()
donde solo necesita cambiar _this._expandNode(node);
con _this._collapseNode(node);
Para colapsar todos los nodos ... (recuerde NO colapsar el nodo raíz cuando no se muestre (me gusta que se muestren varios elementos para mis árboles))
_collapseAllTreeNodeContainers: function(){
var _tree = _this;
function collapse(node) {
// never collapse root node, otherwise hides whole tree !
if ( _tree.showRoot == false && node != _tree.rootNode ) {
_tree._collapseNode(node);
}
var childBranches = dojo.filter(node.getChildren() || [], function(node) {
return node.isExpandable;
});
var def = new dojo.Deferred();
defs = dojo.map(childBranches, collapse);
}
return collapse( _tree.rootNode);
}
Puede usar en la instancia de dijit/Tree
los siguientes métodos:
tree.expandAll();
http://dojotoolkit.org/api/?qs=1.10/dijit/Tree#1_10dijit_Tree_expandTodo
o
tree.collapseAll();
http://dojotoolkit.org/api/?qs=1.10/dijit/Tree#1_10dijit_Tree_collapseAll