2013-11-15 198 views
1

我是jsTree的新手,我有2個問題。動態地將點擊節點作爲加載節點的父節點 - jsTree

* 說明:* 我有很多基於它們的id和類型的層次結構jsTree,我試圖實現按需加載技術。在頁面加載時,我只顯示沒有子項的第一層(根節點)。然後,當我點擊任何一個節點時,我會根據它的id和它的類型去檢索該特定節點的子節點(採用JSON格式)。 jsTree在瀏覽器上成功添加層次結構,但無法確認點擊的節點是加載節點的父節點(邏輯上我期望這是因爲我沒有告訴jsTree這麼做)。所以,現在我的問題來了: -

1)我如何動態地將這個點擊的節點作爲那些加載節點的父節點?

2.)我必須雙擊jsTree的節點來加載相應的子節點。我只需點擊一下就可以做到這一點?

在此先感謝。

這裏是我的代碼代碼:

In the Servlet, I have the following conditional statements:- 

      if(type.equals("root")) 
      { 
      String jsonString = TreeTest.getRoot().getString("data"); 
      out.write(jsonString); 
      } 
      else if(type.equals("rig")) 
      { 
      String jsonString = TreeTest.getSecondHierarchy(Integer.parseInt(id)).getString("data"); 
      out.write(jsonString); 
      } 
      else if(type.equals("well")) 
      { 
      String jsonString = TreeTest.getThirdHierarchy(Integer.parseInt(id)).getString("data"); 
      out.write(jsonString); 
      } 

的,我是回每次調用的JSONObject是在

「數據」 的形式:{ 「數據」: 「節點名稱」, 「ATTR」:{ 「ID」:NODE_ID, 「類型」: 「NODE_TYPE」}}


 Here is my jsTree codes 

      $(document).ready(function(){ 

       $("#tree").jstree({ 

        "themes": {"theme": "classic"}, 

        "core" : { 
          "strings" : { 
           "loading" : "Loading data..." 
          } 
         }, 

        "json_data": { 


        "ajax" : { 
         "type": 'GET', 
         "url": "TreeViewServlet", 

         "data": function(n) 
         { 
         return{ 
          "id" : n.attr ? n.attr("id") : 0, 
          "type": n.attr? n.attr("type"): "root" 
         }; 

         } 

        } 
        }, 


       "types" : { 
       "types" : { 

        "rig" : { 
         "icon" : { 
          "image" : "./images/Rig.gif" 
         } 
        }, 
        "well" : { 
         "icon" : { 
          "image" : "./images/Well.gif" 
         } 
        }, 

        "assysystype" : { 
         "icon" : { 
          "image" : "./images/whxt.gif" 
         } 
        }, 
        "assy" : { 
         "icon" : { 
          "image" : "./images/Assy.gif" 
         } 
        }, 

       "_Drl-WH" : { 
        "icon" : { 
         "image" : "./images/w_icon.gif" 
        } 
       }, 
       "_Compl-XT" : { 
        "icon" : { 
         "image" : "./images/x_icon.gif" 
        } 
       }, 

       "subAssy" : { 
        "icon" : { 
         "image" : "./images/subass.gif" 
        } 
        } 
       } 
       }, 
       "plugins" : ["themes","json_data","ui", "core", "types"] 


      }).delegate(".jstree-open>a", "click.jstree", function(event) 
         { 
          $.jstree._reference(this).close_node(this,false,false); 
         }).delegate(".jstree-closed>a", "click.jstree", function(event) 
         { 
          $.jstree._reference(this).open_node(this,false,false); 
         }); 
       }); 
+0

發佈你已經試過的代碼 –

+0

我已經編輯並添加了我的代碼片段@PragneshChauhan –

回答

0

我解決了我自己的問題,並決定發表一個答案: -

1)我必須得到點擊節點的ID並將它發送到Java Servlet,然後Servlet處理請求並返回一個JSON字符串這個節點的所有孩子,然後使用AJAX,我把孩子們追回到樹上。

2)有一個魔術鍵,對於每個節點,我加了"state" : "closed"就是這樣。