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

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

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

    隨筆 - 31  文章 - 2  trackbacks - 0
    頁面上初始化樹

    <div id="treeBox"
    style="width:200;height:200"></div>

    <script>

    tree=new
    dhtmlXTreeObject(document.getElementById('treeBox'),"100%","100%",0);


    tree.setImagePath("gfx/");

    tree.enableCheckBoxes(false);

    tree.enableDragAndDrop(true);

    </script>

    構造器的參數如下:

    1.應該將樹放置的位置,在調用構造器之前應當為初始化

    2.樹的寬度

    3.樹的高度

    4.標明父節點到樹根節點的深度

    特殊參數:

    1.setImagePath(url):指明了樹圖標的路徑

    2.enableCheckBoxes(mode):多選框是否有效,默認顯示多選框

    3.enableDragAndDrop(mode):是否允許拖放動作

    設置Event
    Handlers

    <div id="treeBox"
    style="width:200;height:200"></div>

    <script>

    tree=new
    dhtmlXTreeObject(document.getElementById('treeBox'),"100%","100%",0);


    ...

    tree.setOnClickHandler(onNodeSelect);//set function object to call
    on node select

    //see other available event handlers in API documentation

    function onNodeSelect(nodeId){

    ...

    }

    </script>

    大多數情況下制定event
    handlers的參數會得到一些值.關于被傳遞的變量細節部分請參考API
    documentation.

    用Script加入節點:

    <script>

    tree=new dhtmlXTreeObject('treeBox',"100%","100%",0);

    ...

    tree.insertNewChild(0,1,"New Node
    1",0,0,0,0,"SELECT,CALL,TOP,CHILD,CHECKED");

    tree.insertNewNext(1,2,"New Node 2",0,0,0,0,"CHILD,CHECKED");

    </script>

    1.參數0將會被傳遞給函數的參數4-7(調用select,image功能)的作用是使用他們的默認值.


    2.第8個參數使用','分割

    3.SELECT:在插入后移動光標到該節點

    4.TOP:在TOP位置加入節點

    5:CHIld:節點為兒子

    6.CHECKED:多選框被選中(如果存在的話)

    從XML中引導數據:

    <script>

    tree=new dhtmlXTreeObject('treeBox',"100%","100%",0);

    tree.setXMLAutoLoading("http://127.0.0.1/xml/tree.xml");

    tree.loadXML("http://127.0.0.1/xml/tree.xml");//load root level
    from xml

    </script>

    1.被打開節點的ID將會被加入到initXMLAutoLoading(url)中去

    2.當被調用的時候沒有額外的ID加入到loadXML(url)中

    3.當調用沒有參數loadXML()時,你將會使用initXMLAutoLoading(url)中的url


    XML Syntax:

    <?xml version='1.0' encoding='iso-8859-1'?>

    <tree id="0">

    <item text="My Computer" id="1" child="1" im0="my_cmp.gif"
    im1="my_cmp.gif" im2="my_cmp.gif" call="true"
    select="yes">

    <userdata name="system">true</userdata>

    <item text="Floppy (A:)" id="11" child="0" im0="flop.gif"
    im1="flop.gif" im2="flop.gif"/>

    <item text="Local Disk (C:)" id="12" child="0" im0="drv.gif"
    im1="drv.gif" im2="drv.gif"/>

    </item>

    <item text="Recycle Bin" id="4" child="0" im0="recyc.gif"
    im1="recyc.gif" im2="recyc.gif"/>

    </tree>

    在PHP的語法中:

    <?php

    if ( stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml") )
    {

    header("Content-type: application/xhtml+xml"); } else {

    header("Content-type: text/xml");

    }

    echo("<?xml version=\"1.0\"
    encoding=\"iso-8859-1\"?>\n");

    ?>

    <tree>節點是強制的,他表明引導數據塊的父親.按照ID參數指定他的父親.引導root的時候你需要指定tree對象:new
    myObjTree(boxObject,width,height,0)

    <item>可以包含子元素(為了一次load更多),該標簽的強制參數如下:


    1.text:節點的名稱

    2.id:節點的id

    可選參數如下:

    3tooltip:節點的提示

    4im0:沒有兒子的節點圖片(節點依靠setImagePath(url)中指定的路徑來得到圖片)


    5.im1:打開有兒子節點時的圖片

    6.im2:關閉有兒子節點的圖片

    7:acolor:沒有選擇元素的顏色

    8:scolor:選擇元素后的顏色

    9:select:在導入節點的時候選擇

    10:open:將節點展開

    11:call:調用函數在選擇節點的時候

    12:checked:如果多選框存在的時候選擇

    13:child:如果節點有兒子的時候為1否則為0

    14:imheight:圖標的高度

    15:imwidth:圖標的寬度

    在xml中直接設定userdata<userdata>

    他有一個參數:name,value來指定他的值

    給節點設定自定義圖標:

    這里有兩種方法來給節點設定自定義圖標.它依賴欲你加元素的方式

    注:依靠setImagepath(url)方法來得到圖片

    javascript方法:使用insertNewChild(...)或者insertNewNext(...)方法


    <script>

    var im0 = "doc.gif";//icon to show if node contains no
    children

    var im1 = "opened.gif";//if node contains children and opened

    var im2 = "closed.gif";//if node contains children and closed

    tree.insertNewItem(0,1,"New Node 1",0,im0,im1,im2);

    tree.insertNewNext(1,2,"New Node
    2",0,"txt.gif","opened.gif","closed.gif");

    </script>

    XML 方法: 使用<item>標簽

    <?xml version='1.0' encoding='iso-8859-1'?>

    <tree id="0">

    <item text="My Computer" id="1" child="1" im0="doc.gif"
    im1="my_opened.gif" im2="my_closed.gif">

    </tree>

    im0:沒有兒子的節點圖片

    im1:打開節點的圖片

    im2:關閉節點的圖片

    構建動態的樹:

    如果你的樹中包含大量的節點(或者你并不想花費時間來導入隱藏的節點).那么會有更好一點的方法來導入節點.針對這個效果我們使用xml創建動態導入節點的深度.


    察看章節:"使用XML導入數據"

    或者更多的細節:在我的知識庫中的文章"在dhtmltree
    V.1.x動態導入數據"

    操作節點:

    在樹對象的方法中很少的操作樹節點的例子

    <script>

    tree=new dhtmlXTreeObject('treeboxbox_tree',"100%","100%",0);

    ...

    var sID = tree.getSelectedItemId();//get id of selected node

    tree.setLabel(sID,"New Label");//change label of selecte node

    tree.setItemColor(sID,'blue','red');//set colors for selected
    node's label (for not selected state and for selected state)

    tree.openItem(sID);//expand selected node

    tree.closeItem(sID);//close selected node

    tree.changeItemId(sID,100);//change id of selected node to
    100

    alert("This node has children: "+tree.hasChildren(100));//show
    alert with information if this node has children

    </script>

    序列樹

    序列化方法允許在XML表達式中得到樹.依靠反射直接序列化生成樹

    <script>

    tree.setSerializationLevel(userDataFl,itemDetailsFl);

    var myXmlStr = tree.serializeTree();

    </script>

    1.沒有參數:id,open,select,text,child

    2.userDataFI true-userdata

    3.itemDetailsFI true
    -im0,im1,im2,acolor,scolor,checked,open

    Tooltips:

    這里有三種方法來給節點設置tooltips:

    1.使用node label(text屬性)作為tooltip-enableAutoTooltips(mode)
    -默認為false

    2.使用tooltip屬性

    3.setItemText(itemId,newLabel,newTooltip)

    移動節點:

    依靠程序來移動節點可以采用下列方法:

    移動upp/down/left

    tree.moveItem(nodeId,mode)

    1."down":向下移動節點(不需要注意層次)

    2."up":向上移動節點

    3:"left":向上一層移動

    直接移動到某個位置:(在樹內)


    tree.moveItem(nodeId,mode,targetId)

    1."item_child":將節點置為第三個參數的子節點

    2:"item_sibling":將節點置為第三個參數的兄弟姐妹

    3.targetId:目標節點的id

    移動節點到某個位置(另外一個樹)


    tree.moveItem(nodeId,mode,targetId,targetTree)

    targetId:目標節點的id

    targetTree:目標樹

    剪切/粘貼

    使用doCut(),doPaste(id):但是只可以使用到選擇的item中

    開發者可以在某個位置刪除節點然后在另外一個位置創建他

    而用戶盡可能的使用拖放功能來移動元素

    節點計數器:

    也有可能在節點的標簽上顯示兒子的個數,可以使用以下方法激活它:

    <script>

    tree.setChildCalcMode(mode);

    </script>

    可能的mode為:

    1."child":在該深度所有的兒子

    2."leafs":在該深度所有的葉子

    3:"childrec":所有的兒子

    4:"leafsrec":所有的葉子

    5:"disabled":什么也沒有

    其他相關的方法:

    _getChildCounterValue(itemId) - 得到當前計數器的值

    setChildCalcHTML(before,after) - 改變計數器的值

    當你在動態導入數據時如果你要使用計數,請在xml中使用child屬性

    smart
    xml解析:

    smart
    xml解析很簡單:在客戶端完整的樹結構被導入,但是僅僅顯示被指定應該顯示的.


    這個將會減少導入時間和大樹的性能.與動態導入相反,完整的樹結構在大多數的script方法中是可行的.


    例如對所有節點的搜索.激活smart xml parsing使用以下方法:

    <script>

    tree.enableSmartXMLParsing(true);//false to disable

    </script>

    smart xml parsing如果在數被完全展開的時候不會執行.

    多選框:

    dhtmlxTree支持三種狀態的多選框.

    三種狀態為:選擇/不選擇/一些子被選擇(不是全部),激活多選框使用以下方法:


    <script>

    tree.enableThreeStateCheckboxes(true)//false為失效

    </script>

    多選框失效:disableCheckbox(id,state)

    一些節點可以隱藏checkboxes:showItemCheckbox(id,state)(nocheckbox
    xml屬性)

    拖放技巧:

    有三種拖放模式setDragBehavior(mode)

    1.拖為兒子:"child"

    2.拖為姐妹:"sibling"

    3.混合模式(previous要激活):"complex"

    加兩個模式:

    1.公用的拖放多個

    2.拷貝多個:tree.enableMercyDrag(1/0)

    事件處理:Event handlers

    在進行拖放多個前使用onDrug事件:setDragHandler(func)

    如果func不能返回true,那么放將會被取消

    當放發生的時候會觸發另外一個事件onDrop:使用setDropHandler(func)


    在所有的event handlers中會有5個參數傳給func對象

    1.被拖的節點id

    2.目標節點的id

    3.如果放為姐妹時,前一個節點的id

    4.被拖節點所屬樹

    5.目標節點所屬樹

    在iframes中的拖放:

    在iframes中的拖放多個默認是可以的.

    所有你需要額外做的就是在沒有樹存在的地方插入下列代碼

    <script src="js/dhtmlXCommon.js"></script>

    <script>

    new dhtmlDragAndDropObject();

    </script>

    考慮到dhtml的性能低下問題,我們介紹兩種方式來提高性能


    1.動態導入

    2.smart XML 解析

    確認你的樹有良好的組織.在同一個深度插入大量的元素會導致可見性的提升和性能的降低


    菜單上下文:

    這里是在dhtmltree中創建上下文菜單

    菜單的內容可以在XML/script中設定.

    因為改變上下文的菜單內容依靠樹元素

    所以開發者可以實現相同菜單或者不同元素使用不同菜單的隱藏/顯示

    菜單上下文的開啟如下:

    <script>

    //init menu

    aMenu=new dhtmlXContextMenuObject('120',0,"Demo menu");

    aMenu.menu.setGfxPath("../imgs/");

    aMenu.menu.loadXML("menu/_context.xml");

    aMenu.setContextMenuHandler(onMenuClick);



    //init tree

    tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);

    ...

    tree.enableContextMenu(aMenu); //link context menu to tree

    function onMenuClick(id){

    alert("Menu item "+id+" was clicked");

    }

    </script>

    刷新節點

    1.refreems(itemIdList,source)僅僅刷新節點列表(不包括他們的兒子)


    2.refreem(itemId) ,刷新元素的兒子.在這里自動導入將會被激活

    節點排序:

    你可以排序在dhtmlTree
    pro(必須使用dhtmlXTree_sb.js),使用以下方法:

    tree.sortTree(nodeId,order,all_levels);

    1.nodeId:開始排序的父節點(可以對整棵樹排序)

    2.order:ASC/DES

    3.all_levles:如果為true,則所有子都會執行

    自定義排序:

    //define your comparator (in our case it compares second words in
    label)

    function mySortFunc(idA,idB){

    a=(tree.getItemText(idA)).split(" ")[1]||"";

    b=(tree.getItemText(idB)).split(" ")[1]||"";

    return ((a>b)?1:-1);

    }

    tree = new ...

    //attach your comparator to the tree

    tree.setCustomSortFunction(mySortFunc);

    比較兩個節點IDs,如果自定義比較被指定,則sortTree(...)方法將會使用它

    搜索功能:

    dhtmlTree允許使用節點的lable來做查詢任務

    也對Smart XML解析支持

    tree.findItem(searchString); //find item next to current
    selection

    tree.findItem(searchString,1,1)//find item previous to current
    selection

    tree.findItem(searchString,0,1)//search from top

    Multiline
    樹元素

    允許顯示在multiline模式.推薦使用關閉lines

    tree.enableTreeLines(false);

    tree.enableMultiLineItems(true);

    樹的Icon:

    使用setItemImage,setItemImage2或者xml(im0,im1,im2 )

    設定ICON的大小:

    <item ... imheight="Xpx" imwidth="Xpx"></item>

    tree.setIconSize(w,h);//set global icon size

    tree.setIconSize(w,h,itemId)//set icon size for particular
    item

    在dhtmlTree中的錯誤處理

    function myErrorHandler(type, desc, erData){

    alert(erData[0].status)

    }

    dhtmlxError.catchError("ALL",myErrorHandler);

    支持錯誤類型:

    1."ALL"

    2."LoadXML"

    處理下列參數

    type:string

    desc:錯誤描述

    erData:錯誤的相關數組對象
    posted on 2008-02-19 22:36 緣來如此 閱讀(3497) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 伊人久久亚洲综合影院首页| 亚洲免费电影网站| 黄网站色视频免费看无下截| 岛国大片免费在线观看| 亚洲av午夜国产精品无码中文字| 欧美日韩国产免费一区二区三区| 精品亚洲国产成人| 日韩免费视频一区| 一级毛片在线完整免费观看| 国产aⅴ无码专区亚洲av麻豆| 中文字幕看片在线a免费| 亚洲AV无码成人专区片在线观看| 小日子的在线观看免费| 亚洲日本在线播放| 成全视频免费高清| 色偷偷亚洲男人天堂| 免费看国产曰批40分钟| 国产成人精品免费大全| 久久久久久亚洲精品| 国产成人免费午夜在线观看| 中文字幕乱码亚洲无线三区| 免费乱理伦在线播放| 免费观看91视频| 亚洲综合色婷婷在线观看| 国产一级一片免费播放| AAA日本高清在线播放免费观看| 亚洲午夜视频在线观看| 天天摸天天操免费播放小视频| 国产va免费观看| 亚洲国产模特在线播放| 国产精品免费_区二区三区观看| 国产精品视频全国免费观看| 亚洲精品在线视频观看| 国产成人免费全部网站| 久久精品国产影库免费看| 亚洲综合国产成人丁香五月激情| 亚洲成片观看四虎永久| 91免费福利精品国产| 真正全免费视频a毛片| 亚洲人成网址在线观看| 四虎永久免费观看|