2009-10-10 4 views
1

J'ai un arbre et une combo. Je dois obtenir les enfants immédiats du noeud 1 et les placer dans la zone de liste déroulante.extjs: Comment remplir la zone de liste déroulante avec les enfants immédiats du noeud d'arbre?

  • Lorsqu'un nœud est sélectionné dans la liste déroulante, l'arborescence doit afficher uniquement ce nœud et ses enfants. Fondamentalement, la zone de liste déroulante sert de filtre pour afficher uniquement un nœud spécifique. Tous les nœuds sauf celui sélectionné sont cachés.

    Toute aide sera appréciée.

  • Répondre

    1

    Consultez la fonctionnalité de filtrage dans la documentation Ext JS API. En haut à gauche "Trouver une classe" vous obtenez de filtrer l'arbre par une chaîne d'entrée. Je pense que ce que vous voulez faire est tout à fait semblable à celle:

    http://dev.sencha.com/deploy/dev/docs/

    Faites défiler jusqu'à fonction filterTree dans:
    http://dev.sencha.com/deploy/dev/docs/resources/docs.js

    filterTree: function(t, e){ 
        var text = t.getValue(); 
        Ext.each(this.hiddenPkgs, function(n){ 
         n.ui.show(); 
        }); 
        if(!text){ 
         this.filter.clear(); 
         return; 
        } 
        this.expandAll(); 
    
        var re = new RegExp('^' + Ext.escapeRe(text), 'i'); 
        this.filter.filterBy(function(n){ 
         return !n.attributes.isClass || re.test(n.text); 
        }); 
    
        // hide empty packages that weren't filtered 
        this.hiddenPkgs = []; 
         var me = this; 
        this.root.cascade(function(n){ 
         if(!n.attributes.isClass && n.ui.ctNode.offsetHeight < 3){ 
          n.ui.hide(); 
          me.hiddenPkgs.push(n); 
         } 
        }); 
    },