DHTMLXTree的使用

经过这几天对DHTMLXTree的折腾总算是有点眉目了,领导催得紧,组长紧的催。唉,把握这次机会来好好总结一下DHTMLXTree。

还是老套路,首先来简单了解一下DHTMLXTree。

DHTMLXTree是DHX系列其中关于树的部分,另外还有像DHTMLXGrid控件。基本都是使用js来实现tree的样式和数据加载,支持的格式有xml、json。有下面几个特点:

特点

  • 支持界面的拖拽
  • 效率高

    在加载数据量比较大的时候能够快速的加载,性能比较好。

  • 界面样式特别丰富
  • API 操作起来比较简单

先来看看效果图

主要代码,这里仅列出部分主要的代码,有兴趣的朋友可以亲自试试

function loadTree() {

    //置空将要放置tree的div
    document.getElementById("doctree_box").innerHTML = "";
    //设置tree对象大小
    var tree = new dhtmlXTreeObject("doctree_box", "100%", "100%", 0);
    //显示样式
    tree.setImagePath("${ctx}/codebase/imgs/");
    //点击tree节点触发的事件
    tree.setOnClickHandler( function(id) {
        var type = tree.getUserData(id, "type");
        if(null==type||""==type){//||"1"==type
            rightFrame.location.href = "loadtreeservice!list.action?viewflag=1&funmenuId=${funmenuId}";
            return;
        }else{
            openPathDocs(id);
        }
    });
    tree.setXMLAutoLoadingBehaviour("function");
    //当树调整自动加载树(用来加载下一级菜单)
    tree.setXMLAutoLoading(function(item_id){
        var id = item_id;
        //获取userdata节点的type属性的值
        var type = tree.getUserData(item_id, "type");
        item_id = item_id.substring(0,item_id.indexOf(‘_‘));
        tree.loadXML("loadtreeservice!open_tree.action?id="+item_id+"&type="+type + "&itemid="+id+"&funmenuId=${funmenuId}");

    });
    //初始化tree
    tree.loadXML("loadtreeservice!init_tree.action?d="
            + Math.random(), function() {
        tree.openItem("${parentId}");
    });
}

以上是用来加载tree的前台js,其实主要就是这里。后台可以根据系统需要用xml或者json来返回数据,

以下是一种xml格式形式。

    public String inittree_() {

    StringBuffer sb = new StringBuffer();

    Department root = departmentManager
            .getDeptById(depId);
    //拼接xml格式
    sb.append("<?xml version=\"1.0\" encoding=‘utf-8‘?><tree id=\"0\"><item id=\""+ root.getId() + "\" text=\"" + root.getName() + "\">");
    //拼接内部item的数据
    //格式:<item id="**" text="显示的文字"></item>
    buildTree(sb, list);

    sb.append("</item></tree>");

    renderXML(sb.toString(), "UTF-8");

    return null;

}

这里如果存在tree之间的嵌套的情况就需要在tree的id上进行处理。

注意事项:

  • 根结点的tree的id始终都是 0 。
  • 需要将tree之间进行嵌套的时,需要将子树的id设置为上一节点的id_1.以此类推,id_2.这样保证两棵树能够嵌套在一起显示。

常见错误

  • load xml error。 这个错误是表示返回的数据不是xml格式的数据,拼接的过程中有问题。
  • XML Refer to not existing parent error 。这个是在使用tree嵌套的时候,id之间的匹配错误,子tree的无法找到父节点。

这次这个tree确实让我很受伤啊,还是在调试的时候太过急躁,归根结底还是技术积累。

# 为将之道,当先治心,泰山崩于前而色不变,麋鹿兴于左而目不瞬。共勉! #

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-26 08:22:42

DHTMLXTree的使用的相关文章

dhtmlxTree 加载大数据量树

在dhtmlxTree中优化加载大数据集:Dynamic Loading 动态加载 一.dhtmlxTree API翻译: 如果树中包含大量的节点(或者用户不想在加载隐藏节点上浪费时间),最好在请求时加载它们,而不是立即加载它们. 为了实现这一目的,引入了使用XML动态加载树级别的功能. 激活动态加载: 1.用户应该在XML中表示以这种方式动态加载的节点:给所有参数都加上child="1",表示它有子节点,点击时才会动态加载该对象下的子节点. 例:<?xml version=&q

dhtmlxTree介绍(转载)

dhtmlxTree 是树菜单,允许我们快速开发界面优美,基于Ajax的javascript库. 她允许在线编辑,拖拽,三种状态(全选.不选.半选),复选框等模式.同时在加载大数据量的时候,仍然 可以保持非常高效的速度.接下来,让我们来体验dhtmlxTree带来的视觉冲击吧 DEMO:http://www.dhtmlx.com/docs/products/dhtmlxTree/samples/API:http://docs.dhtmlx.com/doku.php?id=dhtmlxtree:a

Web应用程序开发,基于Ajax技术的JavaScript树形控件

感谢http://www.cnblogs.com/dgrew/p/3181769.html#undefined 在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用,它用来在Html页面上展现具有层次结构的数据项. 目前市场上常见的JavaScript框架及组件库中均包含自己的树形控件,例如jQuery.Dojo.YUI.Ext JS等,还有一些独立的树形控件,例如dhtmlxTree等,这些树形控件完美的解决了层次数据的展示问题. 展示离不开数据,树形控件主要

dhtmlx-calendar

项目中使用到了dhtmlxTree这个控件,所以在下班后了解了一下dhtmlx这个JavaScript 库.目前只是粗浅的看看,和写一些简单的Demo.先会用吧,下面就其中的一些组件做点总结.本篇博客就从calendar开始. dhtmlx简介 dhtmlx是一套网页开发的JavaScript库,他提供了树.DataGrid.工具条等组件供开发人员使用:避免重复开发组件,缩短开发时间,目的在让开发者充分了解组件的每项功能,同时也让开发者能够迅速并容易地操作这些组件.提供开发者一套相同的开发模式,

前端JS开发框架-DHTMLX--dhtmlXTree

介绍 dhtmlxTree是一个功能丰富的JavaScript树菜单  它允许您快速添加一个好看的,基于ajax的web页面的分层树. treeview支持在线节点编辑.先进的拖放,三态复选框等等.由于特殊的技巧,这个JavaScript树控件能够迅速和有效地加载大数据. 在线Demo事例  在线原文API 特征: 注意,一些功能仅在专业版可用.下面的API说明中 标有pro标识的方法 是专业版本才提供的特性 1.跨浏览器兼容性(Chrome,火狐,谷歌,Safari,IE)支持ie6哦 2.支

实用的树形菜单控件tree

 jQuery plugin: Treeview 这个插件能够把无序列表转换成可展开与收缩的Tree. jQuery plugin: Treeview  jQuery  jstree jsTree是一个基于jQuery的Tree控件.支持XML,JSON,Html三种数据源.提供创建,重命名,移动,删除,拖\放节点操作.可以自己自定义创建,删除,嵌套,重命名,选择节点的规则.在这些操作上可以添加多种监听事件.  jstree  jQuery UI Widgets  FileTreePanel F

DHTMLTree、Dtree和Ztree的学习使用

一.DHTMLTree是树菜单,允许我们快速开发界面优美,基于Ajax的javascript库.她允许在线编辑,拖拽,三种状态(全选.不选.半选),复选框等模式.同时在加载大数据量的时候,仍然可以保持非常高效的速度. DHTMLTree是一个功能丰富的第三方JavaScript树菜单,它能够使用户快速添加一个外观非常漂亮的,基于Ajax技术的网页上的分层树.树视图支持在线节点编辑.现行的拖放功能.三态复选框以及更多功能.由于特殊的技术的使用,使dhtmlxTree能够快速有效的加载结构庞大的树.

分享一个前后端分离方案源码-前端angularjs+requirejs+dhtmlx 后端asp.net webapi

一.前言 半年前左右折腾了一个前后端分离的架子,这几天才想起来翻出来分享给大家.关于前后端分离这个话题大家也谈了很久了,希望我这个实践能对大家有点点帮助,演示和源码都贴在后面. 二.技术架构 这两年angularjs和reactjs算是比较火的项目了,而我选择angularjs并不是因为它火,而是因它的模块化.双向数据绑定.注入.指令等都是非常适合架构较复杂的前端应用,而且文档是相当的全,碰到问题基本上可以在网上都找到答案.所以前端基本思路就以angularjs为主.代码模块化,通过requir

javascript开源大全

javascript开源大全 Ajax框架-jQuery 可视化HTML编辑器-CKEditor 国产jQuery-UI框架-(jUI)-DWZ 网页开发FireFox插件-Firebug 服务器端的JavaScript脚本-Node.js jQuery图表插件-jQchart HTML5-开发框架-jQuery-Mobile 跨浏览器的RIA框架-ExtJS Flash视频播放器-JW-PLAYER jQuery表单插件-jQuery.form jQuery-File-Upload 可视化HT