dhtmlxTree 載入大資料量樹

來源:互聯網
上載者:User

標籤:1.0   body   app   地址   方法表   介面   first   dhtml   滾動   

 在dhtmlxTree中最佳化載入大資料集:Dynamic Loading 動態載入

 一、dhtmlxTree API翻譯:

  如果樹中包含大量的節點(或者使用者不想在載入隱藏節點上浪費時間),最好在請求時載入它們,而不是立即載入它們。

  為了實現這一目的,引入了使用XML動態載入樹層級的功能。

  啟用動態載入:

    1.使用者應該在XML中表示以這種方式動態載入的節點:給所有參數都加上child="1",表示它有子節點,點擊時才會動態載入該對象下的子節點。    

    例:<?xml version="1.0" encoding="iso-8859-1" ?>        <tree id="0">            <item  text="Surveillance" id="a1" im0="book.gif" … child="1"/>            <item …/>            …        </tree>
    2. 設定setXMLAutoLoading方法表示開啟動態載入  
    例:tree.setXMLAutoLoading(url);      tree.load(file); // load the first level of the tree
    
二、項目中實際運用
  1. 先在頁面匯入dhtmlXTree的js,https://docs.dhtmlx.com
  2. dhtmlXTree初始化,在介面中:
    <body>
      <div id=‘treediv2‘ class=‘field-tree-panel‘></div>
    </body>
    <script type="text/javascript">
      var myTree;
      function initTree(){        
            myTree = new dhtmlXTreeObject("treediv2", "100%", "100%", 0); //定義樹對象
            myTree.setImagePath("/esa/resources/dhtmlxTree/codebase/imgs/dhxtree_skyblue/"); //設定樹樣式地址
            myTree.enableCheckBoxes(true);  //設定複選框
            myTree.enableThreeStateCheckboxes(false);  //設定選中父節點時是否全選子節點,true:全選對勾,false:只是父節點前對勾
            myTree.setDataMode("xml");  //設定資料載入的方式,可選XML、JSON、CSV、JS ARRAY
            myTree.setXMLAutoLoading("url"); //設定自動載入的url
            myTree.load("url?id=0");   //設定第一次載入的url

      }
    </script>
   3. 後台方法:
     public String getTree(String id, HttpServletResponse servletResponse){
      
        servletResponse.setContentType("text/xml;charset=UTF-8");    //中文亂碼解決方案             
        if(StringUtils.isEmpty(id)){
            return null;
        }        
        StringBuilder sBuilder = new StringBuilder();
        sBuilder.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>"); //設定xml頭
        if("0".equals(id)){
            //第一次載入根節點    
            sBuilder.append("<tree id=\"0\"><item text=\"ROOT\" id=\"-1\"  child=\"1\" open=\"0\">");    
            sBuilder.append("</item></tree>");
        }else{
       //點擊加號時動態載入子節點
            sBuilder.append("<tree id=\"" + id + "\" ");            
            sBuilder.append(">");
            List<Map<String, Object>> nodeList = customReportService.queryTree(id);
            for (Map<String, Object> map : nodeList) {
                sBuilder.append(" <item text= ");
                sBuilder.append("\"" + map.get("NAME").toString() + "\"");
                sBuilder.append(" id = ");
                sBuilder.append("\"" + map.get("ID").toString() + "\"");                
                sBuilder.append(" child=\"1\" /> ");    
            }
            sBuilder.append("</tree>");
        }
        return sBuilder.toString();
    }
  4. 需注意的屬性
    open為任意值表示開啟節點(當開啟所有節點時,會不斷自動載入下級節點,頁面會滾動。建議只開啟根節點展示一級的資料。點擊加號自動再去載入下級節點)
    checked為任意值表示選擇節點      
    child為1表示有子節點    


參考https://docs.dhtmlx.com/tree__increasing_tree_s_performance.html官方文檔
    
    
  

 

dhtmlxTree 載入大資料量樹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.