2011-09-06 11 views
13

जब मैं निम्नलिखित हैडायनाट्री को पुनः लोड/रीफ्रेश/रीइनिट कैसे करें?

$('#tree').dynatree("option","initAjax",{url:"http://google.com"}); 

मैं dynatree वर्तमान पेड़ डेटा के बारे में भूल जाते हैं और बजाय निर्दिष्ट url से नए डेटा के साथ फिर से लोड करना चाहते हैं। लेकिन मुझे लगता है कि यह डिफ़ॉल्ट रूप से ऐसा नहीं करता है।

धन्यवाद।

उत्तर

13

tree.reload() विधि को देखें, यह आपके बाद के बाद करना चाहिए।

यहाँ दस्तावेज़ देख सकेंगे: http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html#h8.2

डॉक्स में के रूप में

, पेड़ पेड़ के आंतरिक ड्राइंग है, और आप getTree आदेश को फोन करके इसे पाने: प्रारंभ $("#node").dynatree("getTree")

+0

यहां "पेड़" क्या है और मैं इसका उपयोग कैसे प्राप्त कर सकता हूं ?? –

+0

क्या आप वहां हैं ?? –

+0

मैंने और अधिक स्पष्ट होने के लिए एक संपादन जोड़ा है। – longstaff

5

फंक्शन:

function InitTree() { 
    $("#tree3").dynatree({ 
     (...init params...) 
    }); 
} 

InitTree(); 

डेटा को फिर से लोड करने के लिए, फोन:

$("#tree3").dynatree("destroy"); 
InitTree(); 
8

tree.reload(); अजाक्स के रूप में गतिशील रूप से लोड डेटा के लिए है। यदि आप उल/ली सूचियों के साथ काम कर रहे हैं और अपने पेड़ को फिर से लोड करने की जरूरत है, तो आपको $("#tree").dynatree("destroy"); से पहले अपने नियमित राजवंश निर्माण कोड से पहले करना होगा। नष्ट पैरामीटर दस्तावेज नहीं है (http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html देखें)।

+0

बहुत उपयोगी जानकारी। धन्यवाद! – DavidB

5

यह सवाल Trying to reload/refresh dynatree with new data

मेरे समाधान का डुप्लिकेट empty() और destroy() आदि इस तरह के बारे में सोचो detours की आवश्यकता नहीं है है: जब Dynatree सेटिंग्स इसका इस्तेमाल करना चाहिए का एक शब्दकोश निर्दिष्ट आपके द्वारा बनाई गई है। हालांकि यह एक कॉन्फ़िगरेशन डिक्शनरी है, हालांकि कुछ पैरामीटर वैरिएबल हैं और क्लिक आदि के कारण बदलते हैं। तो इसे हल करने और डीओएम को हटाने और इसे पुनर्निर्मित करने जैसे महंगी परिचालनों से बचने के लिए हम इसे जिस तरह से सोचते हैं इस उद्देश्य से Dynatree डेवलपर्स गया है (लेकिन इतना स्पष्ट रूप से AJAX/JSON उदाहरण में दर्ज नहीं किया):

//The HTML: 
     <input name="filter" id="checkbox" type="checkbox" value="X">Checkme<br> 
     <label id="mylabel"></label> 

    $("#checkbox").click(function() { 
    $("#mylabel").text($(this).is(":checked")) 
    $("#tree").dynatree("option", "initAjax", { 
      url: "myurl/myphp.php", 
      data: { 
       myparameter: $("#checkbox").is(":checked").toString() 
      } 
    }); 

    $("#tree").dynatree("getTree").reload(); 
    }); 

यह उदाहरण #tree पर हर बार बटन क्लिक विन्यास सेट है, तो पेड़ को पुनः लोड करता।

+1

एसओ – hims056

+4

में केवल जवाबों का लिंक स्वागत नहीं है शिक्षा के लिए धन्यवाद। मैंने पूरा जवाब शामिल करने के लिए अपना जवाब संपादित किया। – user1737092

0
n= "#tree"; 
$(n).dynatree({}); 
tree = $(n).dynatree("getTree"); 
root = tree.getRoot(); 
tree.enableUpdate(false); 
root.removeChildren(); 
tree.enableUpdate(true); 
1

प्रारंभ में, मैं AJAX कॉल करने के लिए initAjax के साथ "विकल्प" का उपयोग कर रहा था। हालांकि, चूंकि मुझे एक त्रुटि संदेश दिखाना पड़ा, फिर से लोड होने के बाद सर्वर से खाली प्रतिक्रिया मिली, मैंने सामान्य AJAX मार्ग जाने का फैसला किया। मैं AJAX कॉल करता हूं, प्रतिक्रिया प्राप्त करता हूं और फिर पेड़ को फिर से लोड करता हूं। तो मैं अपने जावास्क्रिप्ट फ़ाइल

var myObj = {getDynaTree :function(){ 

    //Refresh the dynatree 
    $("#dynaTree").dynatree("option", "children", null); 
    $.ajax({ 
     url: "myurl", 
     type: "POST", 
     dataType: "application/json", 
     headers:{'Accept' :'application/json', 'Content-Type':  'application/json' }, 
     data : JSON.stringify(myData), 
     //handle the response 
     complete : function(treeData) 
      { 

      $("#dynaTree").dynatree("option", "generateIds", true);  

      var parsedTreeData = JSON.parse(treeData.responseText); 

      if(parsedTreeData.length ==0) { 
       var parsedTreeData = [{title: "No documents found for the search criteria, please revisit the criteria", 
        isFolder: false, tooltip: "No documents found for the search criteria, please revisit the criteria" }]; 

      } 
      $("#dynaTree").dynatree("option", "children", parsedTreeData); 
      $("#dynaTree").dynatree("getTree").reload(); 

      } 
     }); 

    }} 

कॉलिंग समारोह

$("#myLink").click(function() { myObj.getDynaTree(); } 

में इस तरह यह किया dynatree एक अलग में प्रारंभ किया गया था जावास्क्रिप्ट फ़ाइल

//Initialization for the dyna tree. 
    var treeData = [{title: "Dynamic Tree Demo",isFolder: false, tooltip: "Here, is your Dynamic Tree!" }]; 

    jQuery(document).ready(function() { 
    initReqActions(treeData); 
    }); 

    initReqActions= function(myTree){ 
    $("#dynaTree").dynatree({ 
     checkbox: false,    
     selectMode: 2, 
     // create IDs for HTML elements that are generated 
      generateIds: true, 
      cookie: { 
       expires :-1 
      },  
     children: myTree,   
     onQuerySelect: function(select, node) { 
      if(node.data.isFolder) 
       return false; 
     }, 

     onClick: function(node, event) { 
      if(! node.data.isFolder) 
       node.toggleSelect(); 
     }, 
     onDblClick: function(node, event) { 
      node.toggleExpand(); 
     }, 
     onKeydown: function(node, event) { 
      if(event.which == 32) { 
       node.toggleSelect(); 
       return false; 
      } 
     } 


    }); 
} 
2

यदि आप फिर से लोड करने Dynatree चाहते हैं मतलब सबसे पहले नोड को हटाएं कोड से नीचे

$ ("# पेड़") dynatree ("getRoot") removeChildren()।।

+0

धन्यवाद, आप इसके लिए प्रतीक्षा कर रहे थे –

+0

मेरी खुशी .... –