<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    菠蘿三國(guó)

    大江東去,浪淘盡...
    隨筆 - 34, 文章 - 47, 評(píng)論 - 22, 引用 - 0
    數(shù)據(jù)加載中……

    學(xué)習(xí)EXT第六天--關(guān)于樹(shù)TreePanel(Part 2異步獲取節(jié)點(diǎn))

    下面將介紹如何異步取一棵樹(shù)的所有節(jié)點(diǎn),具體做法與官方同步取節(jié)點(diǎn)有很大不同,尤其在json的id屬性上,下面是我一些摸索,可能不是最佳方案,有待大家一起研究。

    異步取節(jié)點(diǎn)的思路是這樣的:
    1、先定義一個(gè)初始化節(jié)點(diǎn)(也可以不定義,看個(gè)人需求)
    2、yui-ext根據(jù)該節(jié)點(diǎn)id請(qǐng)求服務(wù)器,獲得子節(jié)點(diǎn)各屬性
    3、循環(huán)

    特點(diǎn):可以在上一級(jí)目錄中,在服務(wù)器端預(yù)先將該節(jié)點(diǎn)是否有子節(jié)點(diǎn)讀好(json中的isLeaf屬性),雖然但數(shù)據(jù)庫(kù)將多承擔(dān)一些壓力,但用個(gè)count(*)不會(huì)造成太大負(fù)擔(dān)(除非查詢(xún)條件異常復(fù)雜),也可以不讀,即把所有isLeaf設(shè)置為false。


    問(wèn)題:
    1、目前還無(wú)法進(jìn)行reload,即每次打開(kāi)節(jié)點(diǎn)都重新讀取一次
    2、樣式還有些問(wèn)題,無(wú)法通過(guò)node. childNodes[i]設(shè)置子節(jié)點(diǎn)的style,所以無(wú)法改變最后一級(jí)元素的style(也許是通過(guò)別的途徑改變style的?)

     

    示例:
    先給出一段js代碼,可以結(jié)合官方的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,
    //這個(gè)dataUrl是初始化樹(shù)所用的url,你也可以不寫(xiě)或定義一個(gè)靜態(tài)json文件,還可以什么都不寫(xiě)全部依賴(lài)于第二個(gè)url自動(dòng)產(chǎn)生,視具體需求而定
    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);
    //根據(jù)當(dāng)前節(jié)點(diǎn)id,動(dòng)態(tài)拼出請(qǐng)求服務(wù)器的路徑
    //每產(chǎn)生一個(gè)節(jié)點(diǎn),指向一個(gè)事件的引用,將新建loader.dataUrl(具體事件的機(jī)制還需要再研究)
    //注意調(diào)用函數(shù)是beforeload
    tree.on('beforeload', function(node){
    tree.loader.dataUrl = 'calendarDetail.do?method=getDayDetailJSON&parentId='+node.id;
    });
    //這里演示一個(gè)自定義json的用法(description為自定義json的key)
    //以及如何定義某節(jié)點(diǎn)的style(node.ui.textNode.style.title)
    //具體可以看ui這個(gè)類(lèi)
    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();
    }
    };
    }();
    

    同時(shí)再分析一個(gè)json:
    [{"text":"衣服類(lèi)", 
    "id":"5",     //注意:這里是該節(jié)點(diǎn)的id,拼連接時(shí)要用到,與官方的json有所不同
    "leaf":true,
    "cls":"file",
    "description":"這里是衣服類(lèi)"}]   //自定義只需要這樣就可以了

    給出java產(chǎn)生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的節(jié)點(diǎn),具體沒(méi)有給出
    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
    ……
    

    posted on 2007-08-07 16:44 菠蘿 閱讀(651) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): EXT

    主站蜘蛛池模板: 99久久免费看国产精品| 波多野结衣中文一区二区免费| 久久精品免费电影| 免费看无码特级毛片| 无码国产精品一区二区免费式芒果 | 一道本在线免费视频| 一级做a爰片久久毛片免费陪| 无码日韩人妻AV一区免费l| 一级成人a免费视频| 最近免费mv在线观看动漫| 日韩电影免费在线观看| 亚洲网站在线免费观看| 久久电影网午夜鲁丝片免费| 国产性生交xxxxx免费| 亚洲综合色区在线观看| 亚洲AV无码精品色午夜果冻不卡| 97久久精品亚洲中文字幕无码| 亚洲1234区乱码| 亚洲人成图片网站| 最新亚洲人成无码网站| 三级毛片在线免费观看| 免费观看的毛片大全| 国产资源免费观看| 亚洲va久久久噜噜噜久久| 久久亚洲AV成人无码电影| 在线精品亚洲一区二区| 一级一级毛片免费播放| 91嫩草免费国产永久入口| 国产成人啪精品视频免费网| 亚洲乱码日产一区三区| 激情综合亚洲色婷婷五月APP| 黄色片网站在线免费观看| 久久国产精品免费专区| 精品国产免费观看| 国产成人亚洲精品青草天美| 亚洲av无码国产综合专区| 一级做a毛片免费视频| 可以免费看黄视频的网站| 亚洲熟伦熟女新五十路熟妇| 亚洲成a人不卡在线观看| 一级毛片免费在线播放|