dhtmlXTreeObject 部分方法

dhtmlXTreeObject 部分方法 

tree = new dhtmlXTreeObject("treeboxbox_tree", "100%", "100%", 0);//构建dhtmlXTreeObject对象 

tree.setSkin('dhx_skyblue');//设置皮肤 

tree.enableDragAndDrop(0);//是否允许拖放 

tree.enableTreeLines(false);//是否显示TreeLines 

  

初始化 

.loadXML (file,afterCall) //XML文件中加载节点(xml文件的路径,回调函数) 

例:tree.loadXML("../common/tree4.xml");

 

.loadXMLString(xmlString,afterCall) //XML String中加载节点(Xml String,回调函数)

例:treeObj.loadXMLString("<%=GetTree() %>");

 

tree = new dhtmlXTreeObject({

    skin: "dhx_skyblue",

    parent: "treeboxbox_tree",

    image_path: "http://www.cnblogs.com/codebase/imgs/csh_bluebooks/",

    checkbox: true,

    xml: "../common/tree3.xml";

});

 

样式

.setStdImages (image1,image2,image3)//设置默认的节点图标(没有子节点时的图标,不显示子节点时的图标,显示子节点时的图标)

例:tree.setStdImages("book.gif", "books_open.gif", "books_close.gif");//必须在加载XML文件之前使用

 

.setImageArrays (arrayName,image1,image2,image3,image4,image5)

//设置节点折叠打开图标(数组名称—“plus”或者”minus”line crossed imageimage with top lineimage with bottom lineimage without linesingle root image

例:tree.setImageArrays("plus", "plus2.gif", "plus3.gif", "plus4.gif", "plus.gif", "plus5.gif");//很多情况都是成对出现

 

.setImagePath( newPath )//设置图片的路径

例:tree.setImagePath("../common/images/");

 

.setItemColor (itemId,defaultColor,selectedColor) //设置单个节点的颜色(节点的Id,默认节点颜色,选中后节点颜色)

例:tree.setItemColor(tree.getSelectedItemId(), color1, color2);

 

.setItemText (itemId,newLabel,newTooltip) //设置节点的文本(节点的Id,节点的文本,节点的提示信息可选)

例:tree .setItemText(tree.getSelectedItemId(),document.getElementById('ed1').value, document.getElementById('ed1').value);

 

.setItemImage2(itemId, image1,image2,image3)//设置单个节点的图标(节点的Id,没有子节点时的图标,不显示子节点时的图标,显示子节点时的图标)

例:tree.setItemImage2(tree.getSelectedItemId(),'iconText.gif','iconText.gif','iconText.gif');

 

CheckBox

.enableCheckBoxes (mode, hidden)

//是否设置CheckBoxtrue/falsehidden),hidden原文是if set to true, checkboxes not rendered but can be shown by showItemCheckbox

例:tree.enableCheckBoxes(1);

 

.enableThreeStateCheckboxes (mode)//是否设置三种状态

例:tree2.enableThreeStateCheckboxes(true);//使用他之前要设置显示enableCheckBoxes

 

.setCheck (itemId,state)//设置指定节点的CheckBox状态

例:tree.setCheck(tree.getSelectedItemId(),true);

 

.setSubChecked(itemId,state)//设置指定节点和其子节点的CheckBox状态

例:tree.setSubChecked(tree.getSelectedItemId(),true);

 

.getAllChecked()//返回所有CheckBox选中的节点的ID

例:tree.getAllChecked();

事件----使用callEvent方法给事件指定的参数

.setOnOpenHandler (func)//设置节点打开或关闭事件

事件参数:源ID,节点状态(打开或者关闭)

例:tree.setOnOpenHandler(tonopen);

function tonopen(id, mode) {

    return confirm("Do you want to " + (mode > 0 ? "close": "open") + " node " + tree.getItemText(id) + "?");

};//注意参数

 

.setOnClickHandler(func)

事件参数:源ID,先前选择的节点(ID of previously selected item

例:tree.setOnClickHandler(tonclick);

function tonclick(id) {

    alert("Item " + tree.getItemText(id) + " was selected");

};

 

.setOnCheckHandler(func)

事件参数:源ID,选中状态

例:tree.setOnCheckHandler(toncheck);

function toncheck(id, state) {

    alert ("Item " + tree.getItemText(id) + " was " + ((state) ? "checked": "unchecked"));

};

 

.setOnDblClickHandler(func)

事件参数:源ID

例:tree.setOnDblClickHandler(tondblclick);

function tondblclick(id) {

    alert ("Item " + tree.getItemText(id) + " was doubleclicked");

};

 

.setDragHandler(func)

事件参数:源ID,目标IDif node droped as sibling then contain id of item before whitch source node will be inserted,源树,目标树

例:tree.setDragHandler(tondrag);

function tondrag(id, id2) {

    return confirm("Do you want to move node " + tree.getItemText(id) + " to item " + tree.getItemText(id2) + "?");

};

 

.setOnOpenEndHandler(func)

事件参数:源ID,状态(打开或关闭)

tree.attachEvent("onOpenEnd", function(nodeId, event) {

    alert("An id of open item is " + nodeId);

});

 

其他

.getUserData (itemId,name)//获得指定节点的指定参数信息(节点ID,参数的Key名)

例:treeObj.getUserData(id, 'type');

 

.setXMLAutoLoading (filePath)// enables dynamic loading from XML

例:tree.setXMLAutoLoading("../common/tree4.xml");

 

.getItemText(itemId)//获得指定节点的文本

例:tree.getItemText(id)

 

.getLevel(itemId)//获得节点的Level

例:tree.getLevel(id)

 

展开/折叠

.openAllItems (itemId)//展开该节点及所有子节点(节点ID

例:tree.openAllItems(0);

 

.closeAllItems(itemId)//关闭该节点及所有子节点(节点ID

例:tree.closeAllItems(0);

 

.closeItem(itemId)//关闭指定节点(节点ID

例:tree.closeItem(tree.getSelectedItemId());

 

.openItem(itemId)//展开指定节点(节点ID

例:tree.openItem(tree.getSelectedItemId());

 

添加/删除

.insertNewItem(parentId,itemId,itemText,itemActionHandler,image1,image2,image3,optionStr,children)

//给指定节点插入子节点(源ID、新节点ID、新节点文本、选择节点事件可选、没有新节点的图标可选、关闭新节点的图标可选、打开新节点的图标可选、options string—可选、node children flag (for dynamical trees)—可选)

例:tree.insertNewItem(tree.getSelectedItemId(),d.valueOf(),document.getElementById('ed1').value,0,0,0,0,'SELECT');//d=new Date()

 

.insertNewNext(itemId,newItemId,itemText,itemActionHandler,image1,image2,image3,optionStr,children)

//给指定节点添加兄弟节点(源ID,新节点ID,新节点文本、选择节点事件可选、没有新节点的图标可选、关闭新节点的图标可选、打开新节点的图标可选、options string—可选、node children flag (for dynamical trees)—可选)

例:tree.insertNewNext(tree.getSelectedItemId(),d.valueOf(),document.getElementById('ed2').value,0,0,0,0,'SELECT');

 

.deleteItem(itemId,selectParent)//删除指定节点(源ID、如果为真,删除后父节点被选择,否则没有被选中)selectParent - If true parent of deleted item get selection, else no selected items leaving in tree.

例:tree.deleteItem(tree.getSelectedItemId(),true);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dhtmlXTree进行一个小的扩展 需求1: 动态生成树形菜单,每个节点都有各自的URL地址,单击不同的节点框架页的右侧跳转到该节点所对应的URL。(框架页说明:左边是树形菜单;右边是显示页面相应信息的页面) 分析: dhtmlXTree提供了很好的添加,删除节点方法,故选择dhtmlXTree。 但是dhtmlXTree不能满足"每个节点都有各自的URL地址,单击不同的节点框架页的右侧跳转到该节点所对应的URL"这点需求,因次想到了对dhtmlXTree进行一个小的扩展,即在其节点对象原有属性的基础上,再添加两个扩展属性。具体操作如下: 1、找到定义节点对象的那个函数(或方法) function dhtmlXTreeItemObject(itemId,itemText,parentObject,treeObject,actionHandler,mode) 修改为 function dhtmlXTreeItemObject(itemId,itemText,parentObject,treeObject,actionHandler,mode,url,target) 并在方法体中添加赋值语句:this.itemURL=url;this.itemTarget=target; 2、然后修改所有与dhtmlXTreeItemObject有关(直接或者间接相关)的方法: _attachChildNode,insertNewItem,insertNewChild,insertNewNext,_recreateBranch,_parseXMLTree 注:_parseXMLTree方法是与loadXML,loadXMLString相关的。 在这些方法中生成节点的语句中添加相应的参数和语句,以支持新添加的属性itemURL,itemTarget。 需求2: 为dhtmlXTree树上的每一个节点添加右键菜单。附:在树上的节点上点右键时才会生成菜单,空白区域单击时不会生成菜单。 分析: 1、用 dhtmlXTree + dhtmlxmenu 实现。 2、 用dhtmlxmenu生成菜单的部分代码: var menu = new dhtmlXMenuObject(); menu.setImagePath("imgs/"); menu.setIconsPath("images/"); menu.renderAsContextMenu(); menu.loadXML("dhtmlxmenu.xml?e="+new Date().getTime()); menu.addContextZone("treeboxbox_tree"); menu.addContextZone方法是为了把菜单添加到指定区域。 3、dhtmlXTreeObject.prototype._createItem方法是构造树形菜单上元素的具体实现方法。看这个方法的具体操作,可以发现它为每一个节点构建了一个table,节点的内容(即名字)放置在一个span中。 4、考虑到dhtmlxmenu实在指定的区域构建菜单,所以可以为dhtmlXTree树上的每一个节点添加右键事件,在这个右键事件里获得该节点对象所对应的区域,然后在这个区域内构建Menu菜单。 难点和解决方案: 1、怎样获得dhtmlXTree树上的每一个节点对象所对应的区域?(dhtmlXTreeObject.prototype._createItem方法没有为这个节点的span设置id) 解决方法: 在dhtmlXTreeObject.prototype._createItem方法中添加一个为span设置id的语句: 即: 在itemObject.span=document.createElement('span'); itemObject.span.className="standartTreeRow"; 后,新添加一句 itemObject.span.id="treeNode_"+itemObject.id;//为这个span新增一个Id属性 2、为dhtmlXTree树上的每一个节点添加右键事件,在这个右键事件里获得该节点对象所对应的区域,然后在这个区域内构建Menu菜单。 解决方法: a、为dhtmlXTree树上的每一个节点添加右键事件: tree.setOnRightClickHandler(treeOnRegihtClick);//右键事件 b、构建Menu菜单: var menu = new dhtmlXMenuObject(); function treeOnRegihtClick(id){ alert("右键 "+" span.id:"+tree.getItem(id).span.id); menu.setImagePath("imgs/"); menu.setIconsPath("images/"); menu.renderAsContextMenu(); menu.loadXML("dhtmlxmenu.xml?e="+new Date().getTime()); menu.addContextZone(tree.getItem(id).span.id);alert("width:"+tree.getItem(id).span.clientWidth); //var X=tree.getItem(id).span.getBoundingClientRect().left; //var Y=tree.getItem(id).span.getBoundingClientRect().top; var X=document.getElementById('mouseXPosition').value;//获得鼠标的横坐标位置 var Y=document.getElementById('mouseYPosition').value;//获得鼠标的纵坐标位置 menu.showContextMenu(X,Y);//调用showContextMenu方法显示菜单 说明:如果这儿不加上这条语句的话,第一次点击右键时只能生成菜单,但是显示不出菜单,下次点击右键Menu菜单才能弹出。 //menu._showContextMenu(X,Y,tree.getItem(id).span.id); } c、用 javascript 获取当页面上鼠标(光标)位置 <script type="text/javascript"> // 说明:获取鼠标位置 function mousePosition(ev){ if(ev.pageX || ev.pageY){ return {x:ev.pageX, y:ev.pageY}; } return { x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, y:ev.clientY + document.body.scrollTop - document.body.clientTop }; } document.onmousemove = mouseMove; function mouseMove(ev){ ev = ev || window.event; var mousePos = mousePosition(ev); document.getElementById('mouseXPosition').value = mousePos.x; document.getElementById('mouseYPosition').value = mousePos.y; } </script> 页面上放置两个隐藏域存放鼠标的位置:<input type="hidden" id=mouseXPosition><input type="hidden" id=mouseYPosition>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值