2012-04-23 16 views
6

इसट्रीपैनल में एक नोड में बच्चे को कैसे जोड़ा जाए?

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 
}); 

मैं किसी भी नोड के एक बच्चे के नोड कैसे जोड़ सकता हूँ की तरह एक वृक्ष संरचना में (कहते हैं, 'पोता')?

मैं पेड़पैनल की जड़ को पार कर बच्चे को एक्सेस कर सकता हूं, लेकिन मैं इसे कंसोल करता हूं। इसे फायरबग में लॉन्च किया गया है, इसमें कोई फ़ंक्शन नहीं है। अपरिवर्तित कोड के लिए खेद है, मैं इसे प्रारूपित करने में सक्षम नहीं था।

Tree Panel

+0

डेवलपर के लिए फ़ायरबग इंस्टॉल इल्यूमिनेशन में वास्तव में उपलब्ध फ़ंक्शन देखने के लिए - एक फ़ायरबग प्लगइन। ExtJS विकास के लिए बेहद सहायक। – dbrin

+0

मेरे पास यह है :) – Shashwat

उत्तर

13

कुछ इस तरह कार्य करें:

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 
}); 

यदि यह है कि तुम क्या जरूरत है, NodeInterface कक्षा की जाँच है। इसमें कई उपयोगी तरीके हैं: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.NodeInterface

+0

यह काम किया! क्या यह tree.root और tree.getRootNode() के बीच कोई अंतर है? – Shashwat

+0

'रूट' कॉन्फ़िगरेशन तब होता है जब आप स्टोर को नहीं चाहते हैं और उस रूट में अपने रूट डेटा को हार्डकोड करें (जैसे आपका कोड ऊपर)। इसके बाद आप रनटाइम पर getRootNode() विधि के साथ अपना रूट डेटा वापस कर सकते हैं। उपरोक्त लिंक पर रूट 'कॉन्फ़िगरेशन' और getRootNode() 'विधि' सावधानी से पढ़ें। – Natasha

0

यह एक पुराना धागा हो सकता है, लेकिन, मुझे एक मुद्दा था जहां मैंने चयनित नोड में एक बच्चा जोड़ा था। मैं चयनित नोड का विस्तार करके नया बच्चा दिखाना चाहता था और ऐसा असफल रहा।

कारण: चयनित नोड जिस पर मैंने एक बच्चे को जोड़ा था, उसकी संपत्ति 'पत्ता' सही थी। वह सही था। लेकिन परिशिष्ट के कारण, यह अब सच नहीं था। और इसके कारण, जाहिर है, एक्स नोड का विस्तार करने से इंकार कर देता है ...

तो सावधान रहें: जब आप किसी नोड को नोड जोड़ते हैं, तो सुनिश्चित करें कि आप पैरेंट नोड की 'पत्ता' संपत्ति 'झूठी' पर सेट करें:

var newNode = Ext.create('some.model.TreeModel', savedNode); 
newNode.set('parentId', record.parentLocationId); 
selectedNode.set('leaf', false); 
selectedNode.appendChild(newNode); 
selectedNode.expand(); 
treeView.getSelectionModel().select(newNode); 
संबंधित मुद्दे