2012-04-23 12 views
6

W strukturze drzewa jak tenJak dodać dziecko do węzła w TreePanelu?

var rootNode = { 
       id: 'root', 
       text : 'Root Node', 
    expanded : true, 
    children : [ 
    { 
     id : 'c1', 
     text : 'Child 1', 
     leaf : true 
    }, 
    { 
     id : 'c2', 
     text : 'Child 2', 
     leaf : true 
    }, 
    { 
     id : 'c3', 
     text : 'Child 3', 
     children : [ 
     { 
      id : 'gc1', 
      text : 'Grand Child', 
      children : [ 
      { 
       id : 'gc11', 
       text : 'Grand Child 1', 
       leaf : true 
      }, 
      { 
       id : 'gc12', 
       text : 'Grand Child 2', 
       leaf : true 
      } 
      ] 
     } 
     ] 
    } 
    ] 
}; 

var tree = new Ext.tree.TreePanel({ 
    id: 'treePanel', 
    autoscroll: true, 
    root: rootNode 
}); 

Jak mogę dodać węzeł podrzędny dowolnego węzła (powiedzmy „wnuka”)?

Mogę uzyskać dostęp do potomka przechodząc przez katalog główny drzewa, ale konsolę. Zablokowałem go w Firebug, nie ma żadnych funkcji. Przepraszamy za niesformatowany kod, ale nie mogłem go sformatować.

Tree Panel

+0

Aby faktycznie zobaczyć dostępną funkcję w Firebug, zainstaluj Illuminacje dla programistów - wtyczkę Firebug. Niezwykle pomocny w rozwoju ExtJS. – dbrin

+0

Mam to zrobić :) – Shashwat

Odpowiedz

13

zrobić coś takiego:

var treeNode = tree.getRootNode(); 
treeNode.expandChildren(true); // Optional: To see what happens 
treeNode.appendChild({ 
     id: 'c4', 
     text: 'Child 4', 
     leaf: true 
}); 
treeNode.getChildAt(2).getChildAt(0).appendChild({ 
     id: 'gc13', 
     text: 'Grand Child 3', 
     leaf: true 
}); 

Jeśli to jest to, czego potrzebujesz, sprawdź NodeInterface klasie. Ma wiele użytecznych metod: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.NodeInterface

+0

zadziałało! czy jest jakaś różnica między tree.root i tree.getRootNode()? – Shashwat

+0

Konfiguracja "root" służy wtedy, gdy nie chcesz przechowywać i kodu źródłowego twoich danych roota do tej konfiguracji (jak twój kod powyżej). Następnie możesz zwrócić swoje dane root za pomocą metody getRootNode() w czasie wykonywania. Przeczytaj root 'config' i getRootNode() 'method' dokładnie na powyższym linku. – Natasha

0

Może to być starszy wątek, ale wystąpił problem z dodaniem dziecka do wybranego węzła. Chciałem pokazać nowe dziecko, rozwijając wybrany węzeł, a takie nie powiodło się.

Powód: wybrany węzeł, do którego dodałem dziecko, miał ustawioną właściwość "liść" na wartość true. To było poprawne. Ale ze względu na dodatek, nie było to już prawdą. A z tego powodu Ext najwyraźniej nie chce rozwinąć węzła ...

Strzeż się: dodając węzeł do innego węzła, upewnij się, że ustawiłeś właściwość "liść" węzła nadrzędnego na "fałsz":

Powiązane problemy