一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

學習YUI.Ext 第六天--關于樹TreePanel(Part 2異步獲取節點)

下面將介紹如何異步取一棵樹的所有節點,具體做法與官方同步取節點有很大不同,尤其在json的id屬性上,下面是我一些摸索,可能不是最佳方案,有待大家一起研究。
異步取節點的思路是這樣的:
1、先定義一個初始化節點(也可以不定義,看個人需求)
2、yui-ext根據該節點id請求服務器,獲得子節點各屬性
3、循環
特點:可以在上一級目錄中,在服務器端預先將該節點是否有子節點讀好(json中的isLeaf屬性),雖然但數據庫將多承擔一些壓力,但用個count(*)不會造成太大負擔(除非查詢條件異常復雜),也可以不讀,即把所有isLeaf設置為false。
問題:
1、目前還無法進行reload,即每次打開節點都重新讀取一次
2、樣式還有些問題,無法通過node. childNodes[i]設置子節點的style,所以無法改變最后一級元素的style(也許是通過別的途徑改變style的?)
示例:
先給出一段js代碼,可以結合官方的demo(http://yui-ext.com/playpen/yui-ext.0.40/examples/tree/reorder.html)看看:
//定義根id的變量
復制代碼 代碼如下:
var rootId = 1; 
var TreeTest = function(){ 
    // shorthand 
    var Tree = YAHOO.ext.tree; 

    return { 
        init : function(userName){ 
            var tree = new Tree.TreePanel('detailTree', { 
                animate:true,  
                //這個dataUrl是初始化樹所用的url,你也可以不寫或定義一個靜態json文件,還可以什么都不寫全部依賴于第二個url自動產生,視具體需求而定 
                loader: new Tree.TreeLoader({dataUrl:'calendarDetail.do?method=getDayDetailJSON&parentId='+rootId}), 
                enableDD:true, 
                containerScroll: true 
            }); 

            // set the root node 
            var root = new Tree.AsyncTreeNode({ 
                text: 'yui-ext',  
                draggable:false,  
                id:rootId 
            }); 
            tree.setRootNode(root); 

            //根據當前節點id,動態拼出請求服務器的路徑 
            //每產生一個節點,指向一個事件的引用,將新建loader.dataUrl(具體事件的機制還需要再研究) 
            //注意調用函數是beforeload 
            tree.on('beforeload', function(node){  
                tree.loader.dataUrl = 'calendarDetail.do?method=getDayDetailJSON&parentId='+node.id; 
            }); 

             
            //這里演示一個自定義json的用法(description為自定義json的key) 
            //以及如何定義某節點的style(node.ui.textNode.style.title) 
            //具體可以看ui這個類 
            tree.on('beforeexpand', function(node){  
                node.ui.textNode.style.title = ‘red'; 
                alert(node.attributes.description); 
            });                                         

            // render the tree 
            tree.render(); 

            // false for not recursive (the default), false to disable animation 
            root.expand(); 
        } 
    }; 
}(); 

同時再分析一個json:
復制代碼 代碼如下:
[{"text":"衣服類",   
"id":"5",     //注意:這里是該節點的id,拼連接時要用到,與官方的json有所不同  
"leaf":true, 
"cls":"file", 
"description":"這里是衣服類"}]   //自定義只需要這樣就可以了  
給出Java產生json的代碼邏輯片斷:  
…… 
//list為由傳入的id所求的category集合 
List list=  
findBy("parentId", new Long(parentId.toString())); 
StringBuffer JSONStr = new StringBuffer();  //聲明json 
JSONStr.append("["); 

for(CostCategory i : list){   
    boolean isLeaf = isLeaf(i.getId());  //isLeaf()為判斷是否有以該id為parentId的節點,具體沒有給出 
    String icon = isLeaf?"file":"folder"; 
    String description = i.getCategoryDescription()==null?"":i.getCategoryDescription(); 
    //{"text":"treedata.jsp","id":"treedata.jsp","leaf":true,"cls":"file"}, 
    JSONStr.append("{/"text/":/""+ 
            i.getCategoryName()+"/",/"id/":/""+ 
            i.getId()+"/",/"leaf/":"+ 
            isLeaf+",/"cls/":/""+ 
            icon+"/",/"description/":/""+ 
            description+"/"},"); 

JSONStr.deleteCharAt(JSONStr.lastIndexOf(",")); 
JSONStr.append("]"); 
System.out.println(JSONStr); 
out.print(JSONStr);   //輸出json 
…… 

JavaScript技術學習YUI.Ext 第六天--關于樹TreePanel(Part 2異步獲取節點),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲青草视频 | 欧洲免费无线码二区5 | 97夜夜澡人人双人人人喊女 | 久久免费99精品国产自在现线 | 91久久麻豆 | 国产美女精品久久久久久久免费 | 欧美性活一级视频 | 日韩精品免费一区二区三区 | 亚洲精品午夜视频 | 一木道一二三区精品 | 国产极品久久 | 伊人色综合久久 | 激情五月综合综合久久69 | 精品欧美亚洲韩国日本久久 | 91原创视频在线观看 | 亚洲狠狠婷婷综合久久久久图片 | 狠狠干2023| 天堂成人在线 | 午夜在线免费观看视频 | 91在线成人 | 亚州怡红院 | 国产拍拍1000部ww | 五月六月丁香 | 在线看的成人性视频 | 亚洲婷婷六月 | 国产精品国内免费一区二区三区 | 亚洲国产成人资源在线软件 | 亚洲激情成人 | 久久久久精彩视频 | 亚洲福利三区 | 国内精品视频成人一区二区 | 亚洲人成依人成综合网 | 韩国美女一级片 | 成人十八影院在线观看 | 黄污视频网站 | 色综合久久六月婷婷中文字幕 | 午夜激情视频在线 | 亚洲第一页国产 | 美女福利视频一区二区 | 亚洲一区二区在线 | 亚洲国产中文字幕在线观看 |