注意:有些图片不能直接黏贴上来,详细见附件
一、
最近任务实现一个树状菜单,最开始,我打算使用:
Pro-Man(写在jsp页面)
Book(01)
---Book Search(011)
---Book Add(012)
Flower(02)
---- Flower Search(021)
---- Flower Add(022)
将每条存成一个记录,给表增加一个rankcode字段(括号里的值),这样,把数据库里的值一次性取出来,按照rankcode排序,可以得到如上的顺序的list对象。
事实证明:可以取出来,并显示,而且,我也实现了点击一级,所有收起,点击二级,对应的三级收起。我使用的是js,完全自己写js实现的折叠。
结果:效果实现了,但是,特别不美观,好像一级二级三级都独立,页面看不到那种树桩感觉。因为
////////图见附件
那个连接的线条没有,图片很难加上,而且图片和文字布局、文字和文字间的布局也很难把握,所以,想使用这个方法的念头打消了。
二、
后来发现了一个组件特别好用,研究了好一阵才整出来:dtree.js这个是Jquery提供的一个工具。下面就详细介绍一下如何实现一个树状菜单,以及遇到的问题:
1>准备工作:
1. 需要的js:dtree.js、jquery.js
2. dtree.css、img(里面有上图中的线条和基本的电脑图形、光盘图形等。我们可以往里面添加新的图形,也可以替换掉某些图形。注意dtree.css引用了img里的图形,如线条,如树状菜单的根目录默认是img/base.gif)
3. 需要的jar包:json-lib-2.1.jar而json又依赖下面这几个包:commons-lang-2.4.jar、commons-logging-1.1.1.jar、json-lib-2.2.3-jdk13.jar、ezmorph-1.0.6.jar、commons-collections-3.2.1.jar
2>简介:后台Action使用json,将Menu对象封装进List,使用jquery.js提供的方法,将list转为json字符串:
////////图见附件
此外Action中还有一个方法:
////////图见附件
这个看到前台页面就知道为什么我们用俩个方法了。
3>前台显示:
1.main.html
////////图见附件
Src对应的是上面的menu()方法,返回的是left.jsp
2.left.jsp
////////图见附件
红线是框起来的是关键点:使用jquery.js和dtree.js来操作后台传来的json字符串(其实是数组形式):
[{"id":1,"parentId":-1,"role":10,"label":"Proto_Management","url":"welcome.action"},{"id":2,"parentId":1,"role":3,"label":"sim","url":""},{"id":3,"parentId":1,"role":3,"label":"proto","url":""}]
4>看一下数据库:
////////图见附件
三、遇到的问题
1.后台的json字符串可以取到,前台也可以alert出来,可就是tree.add()一句进不去值
解决:
1. 数据库:
1>根节点的id可以是0、1等任何都可以,但是其pid要为-1,(不可以为0)
2>要录完一级、录二级、三级、这样按照顺序来,否则会影响树状菜单的构成
3>url可以为空,但是pid不能为空
2. 添加上 async:false
3. query.js和dtree.js是可以混合用的如上图:紫框框是query.js里封装ajax的使用,框里的红线是dtree.js里的函数添加节点。
4. 一定要引入dtree.css和img。因为这个关系到树状菜单的显示效果。我们可以调整css,可以替换图片。
四、补充:dtree.add()方法里用到的几个参数及含义:
////////图见附件
具体参看:
分享到:
相关推荐
`截图.png`可能是系统实际运行效果的截图,展示了二级树形菜单在浏览器中的呈现方式。`images`目录可能包含了页面中使用的图片资源,如图标或者装饰性图像。 总结起来,这个ASP+ACCESS动态二级树形产品导航菜单利用...
在EXT JS应用系统中,智能树形菜单是一种常见的交互组件,它...在实际项目中,结合文档和示例代码(如"(原创)Ext JS应用系统中的智能树形菜单--利用加权双历树实现_20120208.doc"),可以进一步学习和掌握这一技术。
在文档“(原创)新概念智能树形菜单--利用加权多叉树结合JavaScript树形控件实现_20120415.doc”中,作者可能详细阐述了如何利用JavaScript和加权多叉树实现这一创新设计的具体步骤、示例代码以及实际应用案例。...
原创代码,非网上流传的那些不靠谱的树形结构,理论上可以做到无论多少层的显示,主要是绘制的思想,数据部分可以在每一次点击的时候再去分层。还可以在listvie的最上层做一个导航的部分,通过导航可以直接控制展开...
1. 数据存储:通常将菜单结构存储在数据库的树形结构中,每个节点包含ID、父ID、名称等字段。 2. 读取数据:使用SQL查询获取菜单结构,通常采用递归查询或预计算方式(如自连接)来处理无限级关系。 3. 渲染菜单:在...
由于级联菜单涉及到多级关联,所以数据模型可能采用树形结构,如ArrayList或者NestedArrayList,用于存储菜单的层级关系。每个节点可能包含一个标题和对应的子菜单列表,通过递归或者迭代的方式加载和展示菜单。 ...
描述中的“这个树型菜单也是借鉴了很多人的树型菜单树的”意味着该源码并非完全原创,而是开发者参考了其他同类菜单的设计和实现方式,经过整合和改进后形成的。"主要是为了实用"则表明此菜单系统的核心目标是提高...
本文将深入探讨如何使用JavaScript实现这样的动态权限管理树形结构。 首先,理解权限管理的基本概念至关重要。权限管理涉及角色、资源和操作三个核心元素。角色代表了用户群体,资源是指系统中的对象(如文件、菜单...
5. **树形视图(Tree)**:`tree.html` 和 `tree.js` 可能是用来创建一个多级结构的控件,通常用于文件浏览器、组织结构或者分类展示。JavaScript可以帮助用户展开、折叠节点,选择特定项,并进行其他交互。 6. **...
href="#">原创精华帖展示区</A></DIV> <LI><IMG src="images/_line4.gif" align=absMiddle> src="images/_line1.gif" align=absMiddle> src="images/file.gif" align=absMiddle> href=...
这篇文章主要讲解如何使用Ajax、Div、JavaScript、XML以及Servlet技术来创建一个可以动态加载、展示无限层级目录结构的交互式树形组件。这个组件在网页应用中广泛用于文件管理、组织结构显示、导航菜单等场景。 **...
这个程序可能是由一位名为“雨哲”的开发者原创设计的,它可能包含了一个树形结构的网络应用程序,这种结构常用于展示层次关系数据,如组织结构、文件目录或分类系统。 在ASP中,开发者可以使用VBScript或JScript等...
2022/09/02更新: ... 没有上网条件的可以在这里下载已经更新。 说明:本人前端小白不是什么骗子(我有4.5k多分没啥毛用),之前...看官方文档两天也不如直接看一个完整的实例。 需要安装依赖:npm i -S vuedraggable@next
例如,使用Java Swing或JavaFX构建GUI,通过树形控件展示目录结构,右键菜单实现文件操作。 软件运行环境应支持Linux系统,可能还需要开发环境如GCC或IDE(如Eclipse、IntelliJ IDEA)来编译和调试代码。设计完成后...
总结来说,"ASP+ACCESS 网站"是一个基于ASP技术的动态网站,利用ACCESS数据库存储数据,模仿了北京汽车网站的功能。开发者可以从中学习到如何使用ASP编写服务器端脚本,如何与ACCESS数据库交互,以及如何构建动态...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...
电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...