`
cn_arthurs
  • 浏览: 328302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用dhtmltree动态生成树菜单总结

阅读更多

我之前发布的dhtmltree总结因为页面问题,看起来很不爽,再次做一下更新,希望大家看起来更方便

 

最近有一个项目需要做到无限级树型菜单,而且要实现右键的功能,经别人的介绍,我接触到了dhtmlxtree,虽然最后并没有使用它,但是我想以后会有机会用的

在官方给出的例子中,加载一个xml文件很简单,文件内容如下

 

<?xml version='1.0' encoding='utf-8'?>   
<tree id="0" text="root">   
    <item text="Books" id="books" im0="books_close.gif" im1="tombs.gif" im2="tombs.gif" src="http://www.baidu.com">   
        <item text="Mystery &amp; Thrillers" id="mystery" im0="book.gif" im1="books_open.gif" im2="books_close.gif">   
            <item text="Lawrence Block" id="lb" im0="book.gif" im1="books_open.gif" im2="book.gif">   
                <item text="All the Flowers Are Dying" id="a1" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"  child="1">   
                </item>   
                <item text="The Burglar on the Prowl" id="lb_2" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>   
                <item text="The Plot Thickens" id="lb_3" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>   
                <item text="Grifter's Game" id="lb_4" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>   
                <item text="The Burglar Who Thought He Was Bogart" id="lb_5" im0="book_titel.gif" im1="book_titel.gif" im2="book_titel.gif"/>   
            </item>   
        </item>   
    </item>   
</tree>

 简单了解下,id就是这个节点ID,text是显示的内容,src是点击时的超链接,有了这个xml文件的结构之后,我们就可以通过页面发出请求访问后台,由后台生成类似的xml的字符串,发送到页面,有页面进行接收处理


在页面中的显示如下

<link rel="STYLESHEET" type="text/css" href="../css/dhtmlXTree.css">    
    <script src="../js/dhtmlXCommon.js"></script>    
    <script src="../js/dhtmlXTree.js"></script>    
   
......    
   
   
<div id="treeboxbox_tree"></div>    
<script language="javascript">
   tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%",0);
			tree.setImagePath("../../images/csh_bluebooks/");
			tree.setXMLAutoLoading("tasklist.do");//如果不加的话就会不现实有下级菜单
            tree.loadXML("tasklist.do?id=<%=id%>");
 function tondblclick(id){
    id=tree.getSelectedItemId();
   
	//window.location="searchByStype.do?stype=id";	
	window.parent.main.location="taskright.do?id="+id;
}
  tree.setOnDblClickHandler(tondblclick);//设置tree的双击事件
  function add(){
	if(tree.getSelectedItemId()==""){
		alert("请选中父任务进行添加");
		return false;
	}

	window.parent.main.location="taskadd.do?id="+tree.getSelectedItemId();
}
 function update(){
	if(tree.getSelectedItemId()==""){
		alert("请选中任务进行修改");
		return false;
	}
	window.parent.main.location="taskupdate.do?id="+tree.getSelectedItemId();
}
 function update1(){
 	if(tree.getSelectedItemId()==""){
		alert("请选中任务进行修改");
		return false;
	}
	window.parent.main.location="taskupdate1.do?id="+tree.getSelectedItemId();
}
function del(){
	if(tree.getSelectedItemId()==""){
		alert("请选中任务进行删除");
		return false;
	}
    if(confirm('确定要删除吗?'))
    {
	 window.parent.main.location="taskdel.do?id="+tree.getSelectedItemId();
	}
}
function add1(){

	window.parent.main.location="taskadd.do?id=<%=id%>";
}
function add2(id){
	tree._xopenAll(tree._globalIdStorageFind(id));
}
function add3(id){
	//tree.refreshItem(id); //刷新指定节点
	window.location.reload();
}
function opentiems(itemId){
	tree.openAllItems(0);
}
function cltime(){
	tree.closeAllItems(0);
}


</script>

 这里的tree.loadXML说的明白一点,就是页面第一次打开的时候,访问的请求

tree.setXMLAutoLoading是展开树发送的请求

大家还可以通过查看API定义一些事件处理如:

tree.setOnDblClickHandler(tondblclick);//设置tree的双击事件

台的代码如下:

 

 

public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		HttpSession session=request.getSession();
		UserVo user=(UserVo)session.getAttribute("user");
		String id =request.getParameter("id");

		String[] ids=id.split("_");
		String pid=ids[0];
		String fid=ids[1];
		response.setContentType("text/xml;charset=UTF-8");
		response.setHeader("Cache-Control","no-cache");
		StringBuffer sb = new StringBuffer();
		sb.append("<?xml version='1.0' encoding='utf-8'?>\n");
		if(fid.equals("0"))
		{
			id="0";
		}
		sb.append("<tree id=\""+id+"\">\n");
		List list = projectService.gettreexml(pid, fid);
		
		for(int i=0;i<list.size();i++){
			
			PmenuVo bean = (PmenuVo)list.get(i);
			
			sb.append("\t<item");
			if(!bean.getSum().equals("0")){
				sb.append(" child='1' open ='1'");
			}
			String id11=pid+"_"+bean.getId();
			
			sb.append(" id='"+id11+"' text='"+bean.getTaskname().trim()+"'>\n");
			
			sb.append("\t</item>\n");
			
		}
		sb.append("</tree> ");
			try {
				response.getWriter().print(sb.toString());
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		return null;
	}

 

分享到:
评论
4 楼 cn_arthurs 2009-08-16  
yuxin_85 写道
请问一下,当执行tree.setXMLAutoLoading()方法展开树发送请求时,
如何把当前展开节点的父节点Id 也传到后台去?(默认只会把当前选中节点的Id传到后台去)



可以使用这个方法 getParentId(itemId)来获取itemId节点的父节点ID
3 楼 yuxin_85 2009-08-15  
请问一下,当执行tree.setXMLAutoLoading()方法展开树发送请求时,
如何把当前展开节点的父节点Id 也传到后台去?(默认只会把当前选中节点的Id传到后台去)
2 楼 cn_arthurs 2009-06-05  
yanMouse 写道

问一下,你这个有没有完整的代码,谢谢了,能否给我了。


你可以去下面的网站上去下载,有很多的demo的
http://www.dhtmlx.com/docs/products/dhtmlxTree/index.shtml
如果有问题大家一起研究
1 楼 yanMouse 2009-06-04  
问一下,你这个有没有完整的代码,谢谢了,能否给我了。

相关推荐

    动态生成菜单树

    在IT行业中,动态生成菜单树是一项常见的需求,尤其是在开发Web应用程序时。这通常涉及到前端界面与后端数据的交互,以及数据结构的处理。这里,我们主要探讨的是如何使用JSP(JavaServer Pages)来实现这个功能,...

    动态生成树形菜单

    动态生成树形菜单

    从数据库动态生成树形菜单的JSP实现,使用dtree

    使用dtree插件生成动态树 1,从动态树的要求我们要从数据库生成 d = new dTree('d'); d.add(1,0,'云南电信'); d.add(11,1,'省公司本部'); d.add(12,1,'昆明分公司'); d.add(121,12,'公司领导'); d.add(122,12,'...

    Struts 2项目 ajax动态生成树形菜单

    总结起来,"Struts 2项目 ajax动态生成树形菜单"是一个结合了Struts2框架、AJAX技术和数据库操作的实践案例,它展示了如何通过前后端交互动态构建Web界面,提高了用户体验。在实际开发中,这样的设计模式可以应用于...

    C#左侧动态菜单(包含树控件)

    在本项目中,我们探讨的是如何使用C#来创建一个左侧的动态菜单,这个菜单还结合了树控件,提供了一种可伸缩的视图,以增强用户交互体验。下面我们将深入解析这一技术实现的关键知识点。 首先,我们要理解菜单的基本...

    java动态生成菜单

    `dtree`插件则是一个用于前端展示的树形结构组件,它可以优雅地展示这些动态生成的菜单。 首先,我们需要理解Java如何从数据库获取菜单数据。通常,菜单数据存储在关系型数据库如MySQL、Oracle或PostgreSQL中的表中...

    dtree动态生成树

    在`dtreeDemo`中,通常会包含一个示例程序,用于演示如何使用特定的库(如Python的`sklearn`库)来动态生成和训练决策树模型。这个程序可能会包括以下部分: - 加载数据集:可能是一个CSV文件,包含了用于训练的特征...

    读取xml生成树,ajax读取xml动态生成树(1)

    总结来说,通过理解XML的基本结构,利用DOM解析XML并构建树形结构,结合AJAX实现异步数据加载,我们能够动态生成交互式的树形菜单。在实际应用中,这样的技术可以用于网站导航、文件系统浏览、数据展示等多种场景,...

    C# WinForm 用MenuStrip动态生成菜单并动态加载事件

    ### C# WinForm 使用 MenuStrip 动态生成菜单与事件加载详解 在 C# WinForm 开发中,经常需要根据不同的需求动态生成菜单项,并且为这些菜单项绑定相应的事件处理程序。本文将详细介绍如何利用 `MenuStrip` 控件来...

    从数据库取数据动态生成菜单

    总结来说,动态生成菜单是提高Web应用用户体验和管理效率的重要技术。它涉及到数据库设计、后端编程、数据结构处理及前端渲染等多个方面,需要开发者具备全面的技能。通过不断学习和实践,我们可以更好地掌握这项...

    Coolite动态生成折叠菜单

    在IT领域,动态生成菜单是一项常见的需求,尤其是在Web开发中,它能提供用户友好的界面体验。Coolite动态生成折叠菜单是一种技术方案,专门解决这个问题。这个技术利用Coolite工具,能够根据数据库中的数据实时创建...

    ajax动态生成树型菜单

    总结来说,"ajax动态生成树型菜单"是一个典型的前后端交互实例,它结合了Ajax的异步特性、Struts2的MVC架构以及Dojo的UI组件能力。这个过程涉及到了数据库设计、服务器端编程、客户端脚本以及UI交互等多个环节,展示...

    最小生成树计数结题报告与代码

    Floyd-Warshall算法通常用于求解所有对最短路径,但我们可以利用其动态规划的性质来处理最小生成树的问题。我们可以创建一个邻接矩阵来表示图的边和权重,然后使用矩阵运算来寻找可能的最小生成树组合。 在C++代码...

    dhtmltree

    【dhtmltree】是一款基于Ajax技术的动态树形菜单组件,它主要用于网页中构建交互性强、功能丰富的层次结构展示。这个组件允许用户通过异步方式加载数据,无需刷新整个页面,提高了用户体验。在Web应用程序中,它常...

    可以动态生成的树型导航菜单

    本文将深入探讨如何实现这样的功能,并结合给定的“树菜单”文件,分析其背后的实现原理和技术细节。 首先,树型导航菜单通常由HTML、CSS和JavaScript构建,利用数据驱动的方式动态渲染。当用户访问网站或应用时,...

    度约束为2的最小生成树算法

    - 使用循环迭代地选择最小权重的边加入到生成树中,同时确保加入该边后顶点的度数不超过2。 - 遍历已经加入生成树的顶点`i`,检查是否还有未加入的顶点`j`与其相连并且满足度数约束条件。 - 如果找到了满足条件的...

    头歌数据结构图的最小生成树算法

    // 该函数使用邻接矩阵存储结构,通过Prim算法构建最小生成树 } ``` ##### 2.2.2 邻接表存储 ```c void MiniSpanTree_PRIM(ALGraph G, VertexType u) { // 代码实现省略,参见给定文件 // 该函数使用邻接表存储...

    jsp实现动态树形菜单

    【标题】"jsp实现动态树形菜单"涉及的是在Web开发中使用JSP技术构建一个可以自动生成层次结构的交互式菜单系统。JSP(JavaServer Pages)是Java平台上的服务器端脚本语言,用于创建动态网页。动态树形菜单在网站中常...

    读取数据库 动态生成树节点

    要实现动态生成树节点,首要任务是与数据库建立连接。在C#中,这通常通过ADO.NET库来完成。我们可以使用`SqlConnection`类打开到SQL Server的连接,`SqlCommand`类执行SQL查询,然后用`SqlDataReader`遍历查询结果。...

Global site tag (gtag.js) - Google Analytics