`
liyunqiangyq
  • 浏览: 30447 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

dtree树的扩展

阅读更多

虽然说项目已经告一段落了,上个星期还是忙。搞定权限,优化代码,搭配外网运行环境。不满意权限树的超级无敌慢,自己摞起袖子上阵,还好有个DTree。自己还得抽空写文档。
最大的收获还是dtree,其实以前也曾经注意到DTree,不过那时候没有真正的用在实际的开发中,也没有太放到心上。感谢http://www.destroydrop.com
这个dTree果然是非常的不错,正是我寻找的基于客户端的树。在MVC框架下这种基于客户端处理的树更是体现出了它的优势,而且在需要对树的效率进行优化时候也更有空间。
你只需要把需要显示的树的节点(s)传到客户端,其他的交给dTree来做。

根据dtree的javascript可以随意扩展,如下ex_dtree.js做简单的扩展:
---------------- ex_dtree.js -------------
function getRootId(root){
  return root.aNodes[0].id;
}
function getRootName(root){
  return root.aNodes[0].name;
}
function getSelectedId(root){
  return root.aNodes[root.selectedNode].id;
}
function getSelectedNode(root){  
  alert(root.aNodes[root.selectedNode].name +"--"+ root.aNodes[root.selectedNode].id );
  alert(root.selectedNode);
}
function getParentId(root){
  return root.aNodes[root.selectedNode].pid;
}
function isSomeNodeSelected(root){
  return (root.selectedNode == null || root.selectedNode == "undefined");
}
function forwardDelete(root){
  if(isSomeNodeSelected(root)){
    alert("请选中要删除的节点!");
    return;
  }
  location.href = "tree.delete.do?rootid=" + getRootId(root) + "&rootname=" + getRootName(root) + "&id=" + getSelectedId(root);
}
function forwardAdd(root){
  forwardUrl = "tree.treeadd.istjsp?rootid=" + getRootId(root) + "&rootname=" + getRootName(root) + "&parentId=" + getSelectedId(root);
  parent.main.location.href = forwardUrl;  
}
function forwardDetail(root){
  if(isSomeNodeSelected(root)){
    alert("请选中要修改的节点!");
    return;
  }
  forwardUrl = "tree.detail.do?rootid=" + getRootId(root) + "&rootname=" + getRootName(root) + "&id=" + getSelectedId(root);
  parent.main.location.href = forwardUrl;  
}
一下树的显示页面
----------------  treedisplay.jsp -------------------------------

<%@ page c language="java"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.istqz.com" prefix="istframe"%>
<HTML>
<HEAD>
<TITLE> Tree Displayer </TITLE>
  <link rel="StyleSheet" href="commoncss/dtree.css" type="text/css"/>
  <script type="text/javascript" src="commonjs/dtree.js"></script>
  <script type="text/javascript" src="commonjs/ex_dtree.js"></script>  
  <SCRIPT language="javascript" src="commonjs/popmenu.js"></SCRIPT>
  <script language="javascript">
  function doRedirect(url){
    parent.main.location.href=url;
  }
  </script>
</HEAD>
<BODY topmargin="0"  >
<%
String rootid = (String)request.getAttribute("rootid");
String rootname = (String)request.getAttribute("rootname");
java.util.List notes = (java.util.List)request.getAttribute("treefordisplay");
StringBuffer treeSb = new StringBuffer("<SCRIPT LANGUAGE=\"javascript\">\n");
treeSb.append(rootid);
treeSb.append("= new dTree('");
treeSb.append(rootid) ;
treeSb.append("','');\n");
treeSb.append(rootid);
treeSb.append(".config.useStatusText=true;\n");
treeSb.append(rootid) ;
treeSb.append(".config.useCookies=false;\n");
treeSb.append(rootid);
treeSb.append(".add('");
treeSb.append(rootid);//selfid
treeSb.append("','");
treeSb.append(-1);//parentid
treeSb.append("','");
treeSb.append(rootname);//selfname
treeSb.append("',");
treeSb.append("'javascript:void(0);');\n");
if(notes != null){
  int size = notes.size();
  for(int i = 0;i < size; i++){
    Object[] vals = (Object[])notes.get(i);
    treeSb.append(rootid);
    treeSb.append(".add('");
    treeSb.append(vals[0].toString());//selfid
    treeSb.append("','");
    if(vals[2] == null || vals[2].equals("")){
      treeSb.append(rootid);//parentid
    }else{
      treeSb.append(vals[2].toString());//parentid
    }
    treeSb.append("','");
    treeSb.append(vals[1].toString());//selfname
    treeSb.append("',");
    treeSb.append("'javascript:doRedirect([url=file://\\']\\'[/url]");
    treeSb.append(vals[4].toString());
    treeSb.append("[url=file://\\');');\n]\\');');\n[/url]");
  }
}
treeSb.append("document.write(");
treeSb.append(rootid);
treeSb.append(");\n");
treeSb.append("</SCRIPT>");
out.println(treeSb.toString());
%>
<istframe:popuMenu/>
<istframe:msgDialog/>
</BODY>
</HTML>

分享到:
评论

相关推荐

    layui dtree树形结构

    在这个场景中,我们看到的"layui dtree树形结构"指的是在用户点击一个文本框时,会弹出一个下拉框,下拉框内显示的是一个层次分明的树形结构。这种设计可以方便用户从多个选项中选择一个或多个层级相关的项目。 ...

    dtree 树结构 前端

    【dtree 树结构 前端】是一种在前端开发中常见的数据展示方式,它用于构建和展现层次化的数据结构,比如文件...通过理解和掌握这些知识点,开发者可以有效地在前端项目中实现和优化dtree树结构,提供良好的用户体验。

    stree ajax树 dtree的扩展

    **Ajax树技术详解:以stree扩展dtree为例** 在Web开发中,树形结构的展示经常被用于数据管理和组织,比如目录结构、组织架构、菜单系统等。传统的静态树结构在数据量大或者需要实时更新的情况下,用户体验往往不佳...

    js dtree无限级扩展的树形菜单.rar

    本文将深入探讨“js dtree无限级扩展的树形菜单”这一主题,这是一种基于JavaScript的树形菜单插件,适用于构建多层次、可扩展的导航系统。 首先,我们来了解“js dtree”的基本概念。js dtree 是一个JavaScript库...

    dtree树forhtml

    在Web开发领域,"dtree树forhtml"是一种常见的用于构建HTML页面中树形结构的插件。这种插件能够帮助开发者轻松地创建交互式的、层次化的数据展示,常见于目录浏览、组织结构图或者文件系统等场景。下面将详细探讨...

    Dtree树形结构连接数据库的具体实现代码

    ### Dtree树形结构连接数据库的具体实现方法 #### 一、背景介绍 在现代Web开发中,树形结构是常用的数据展示方式之一,特别是在管理后台系统中用来展示组织架构、目录结构等。本文将详细介绍如何在JSP环境中利用...

    Dtree动态树菜单

    Dtree通常是一个JavaScript库或者框架的一部分,用于构建可扩展的、交互式的树形菜单。这样的菜单在网页应用中特别有用,特别是那些需要管理层次结构数据的系统,如文件管理系统、组织结构图、权限分配等。Dtree...

    Dtree树菜单 动态树

    DTree,作为一个动态树形菜单的实现,是网页应用中用于展现多级分类数据的有效工具。在这个项目实例中,我们将深入探讨DTree的原理、实现方式以及其在实际应用中的优势。 首先,我们要理解“动态”这个词在DTree中...

    dtree js树形菜单 你懂的

    **dtree JavaScript 树形菜单组件详解** 在Web开发中,树形菜单是一种常见的交互元素,用于展示层次化的数据结构,如网站导航、文件系统或组织结构等。`dtree`是一个轻量级且易于使用的JavaScript库,专门设计用于...

    基于layui的dtree 树形组件

    **基于layui的dtree树形组件详解** 在Web开发中,树形组件是一种常见的数据展示方式,它能够清晰地组织和展示层次结构的数据。layui是一个轻量级的前端框架,而dtree是layui扩展的一个树形插件,适用于构建各种管理...

    dtree树控件的资料

    **dtree树控件详解** dtree是一种常用于Web应用中的图形化用户界面元素,它以树状结构展示数据,便于用户浏览和操作层级关系的数据。这种控件在各种管理系统、文件系统、导航菜单等场景中广泛应用。在本文中,我们...

    dtree实现的树支持多选

    8. **可扩展性**:优秀的DTree库应提供API供开发者自定义行为,如添加新节点、删除节点、搜索节点等功能,以满足不同项目的需求。 9. **兼容性**:考虑到浏览器差异,DTree实现需确保在主流浏览器上运行良好,包括...

    动态和高性能的DTREE树

    在IT领域,决策树(Decision Tree,简称DTREE)是一种常用的数据挖掘和机器学习算法,它通过树状结构来表示可以进行的决策及其可能产生的结果。在这个特定的压缩包文件中,我们关注的是两种特殊的DTREE实现:动态...

    dtree树形菜单的简单使用举例

    **dtree树形菜单简介** `dtree`是一种在网页界面上实现树形结构菜单的工具,常用于网站导航、数据分类展示等场景。它能够帮助用户以清晰、直观的方式组织和浏览层次化的数据,提高用户体验。在本例中,我们将探讨...

    Dtree树形结构菜单

    **Dtree:构建优雅的树形结构菜单** 在IT领域,树形结构是一种常见的数据组织方式,它模拟了自然界中的树状层次关系,用于表示具有层级关系的数据。Dtree是专门用于创建美观、多级的树形结构导航菜单的工具,广泛...

    对带checkbox的dtree树复选操作的一点改进

    "对带checkbox的dtree树复选操作的一点改进"这个主题聚焦于一个常见的UI组件——带有复选框的树形结构(dtree),它常用于展现层级关系的数据,并允许用户进行多选操作。这篇博客的作者通过分享自己的实践经验和代码...

    dtree树,简单易懂的树形结构

    **dtree树:理解与应用** dtree树,也称为决策树(Decision Tree),是一种常见的机器学习算法,常用于分类和回归任务。它通过构建一个树状模型来表示可能的决策路径及其相应的结果,使问题的解决过程变得直观且...

    使用DTREE构建树

    - **可扩展的数据模型**:设计能够反映树结构变化的数据模型,比如使用数据库存储节点信息,支持增删改查操作。 - **事件监听**:监听用户的交互事件,如点击、拖拽等,触发相应的树结构更新。 - **异步处理**:...

    dtree树形菜单范例.rar

    【dtree树形菜单范例】是一个用于构建多级子节点树形菜单的插件,主要应用于网页设计,尤其适用于网站后台和用户中心的导航。这个插件以其易用性和知名度,成为许多开发者构建层级结构清晰、交互友好的菜单系统的...

    dtree建立树形目录

    `dtree` 是一个轻量级的JavaScript库,专门用于在网页上创建交互式的树形目录。这个库以其简单易用和高度自定义的特点受到开发者们的欢迎。 首先,我们来详细了解一下`dtree`的核心功能和特点: 1. **快速搭建**:...

Global site tag (gtag.js) - Google Analytics