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

如何实现一个树状菜单(原创)

 
阅读更多

注意:有些图片不能直接黏贴上来,详细见附件

一、

最近任务实现一个树状菜单,最开始,我打算使用:

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.       需要的jsdtree.jsjquery.js

2.       dtree.cssimg(里面有上图中的线条和基本的电脑图形、光盘图形等。我们可以往里面添加新的图形,也可以替换掉某些图形。注意dtree.css引用了img里的图形,如线条,如树状菜单的根目录默认是img/base.gif

3.       需要的jar包:json-lib-2.1.jarjson又依赖下面这几个包:commons-lang-2.4.jarcommons-logging-1.1.1.jarjson-lib-2.2.3-jdk13.jarezmorph-1.0.6.jarcommons-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.jsdtree.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可以是01等任何都可以,但是其pid要为-1,(不可以为0

2>要录完一级、录二级、三级、这样按照顺序来,否则会影响树状菜单的构成

3>url可以为空,但是pid不能为空

2.  添加上 async:false

3.  query.jsdtree.js是可以混合用的如上图:紫框框是query.js里封装ajax的使用,框里的红线是dtree.js里的函数添加节点。

4.  一定要引入dtree.cssimg。因为这个关系到树状菜单的显示效果。我们可以调整css,可以替换图片。

四、补充:dtree.add()方法里用到的几个参数及含义:

////////图见附件

具体参看:

分享到:
评论

相关推荐

    ASP+ACCESS动态二级树形产品导航菜单(黄生原创作品)

    `截图.png`可能是系统实际运行效果的截图,展示了二级树形菜单在浏览器中的呈现方式。`images`目录可能包含了页面中使用的图片资源,如图标或者装饰性图像。 总结起来,这个ASP+ACCESS动态二级树形产品导航菜单利用...

    Ext_JS应用系统中的智能树形菜单

    在EXT JS应用系统中,智能树形菜单是一种常见的交互组件,它...在实际项目中,结合文档和示例代码(如"(原创)Ext JS应用系统中的智能树形菜单--利用加权双历树实现_20120208.doc"),可以进一步学习和掌握这一技术。

    新概念智能树形菜单--利用加权多叉树结合

    在文档“(原创)新概念智能树形菜单--利用加权多叉树结合JavaScript树形控件实现_20120415.doc”中,作者可能详细阐述了如何利用JavaScript和加权多叉树实现这一创新设计的具体步骤、示例代码以及实际应用案例。...

    多层树形菜单,非explanderlistview叠加

    原创代码,非网上流传的那些不靠谱的树形结构,理论上可以做到无论多少层的显示,主要是绘制的思想,数据部分可以在每一次点击的时候再去分层。还可以在listvie的最上层做一个导航的部分,通过导航可以直接控制展开...

    ASP无限级联动菜单源码[80端口原创]

    1. 数据存储:通常将菜单结构存储在数据库的树形结构中,每个节点包含ID、父ID、名称等字段。 2. 读取数据:使用SQL查询获取菜单结构,通常采用递归查询或预计算方式(如自连接)来处理无限级关系。 3. 渲染菜单:在...

    高仿美团级联菜单(原创)

    由于级联菜单涉及到多级关联,所以数据模型可能采用树形结构,如ArrayList或者NestedArrayList,用于存储菜单的层级关系。每个节点可能包含一个标题和对应的子菜单列表,通过递归或者迭代的方式加载和展示菜单。 ...

    浪无影ASP树型菜单源码

    描述中的“这个树型菜单也是借鉴了很多人的树型菜单树的”意味着该源码并非完全原创,而是开发者参考了其他同类菜单的设计和实现方式,经过整合和改进后形成的。"主要是为了实用"则表明此菜单系统的核心目标是提高...

    用javascript做的动态数实现权限管理树形结构(原创)

    本文将深入探讨如何使用JavaScript实现这样的动态权限管理树形结构。 首先,理解权限管理的基本概念至关重要。权限管理涉及角色、资源和操作三个核心元素。角色代表了用户群体,资源是指系统中的对象(如文件、菜单...

    几个原创的js界面控件(菜单,对话框,进度条,选项卡,树)

    5. **树形视图(Tree)**:`tree.html` 和 `tree.js` 可能是用来创建一个多级结构的控件,通常用于文件浏览器、组织结构或者分类展示。JavaScript可以帮助用户展开、折叠节点,选择特定项,并进行其他交互。 6. **...

    js实现精致折叠菜单

    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 +js +xml+ servlet 实现无限级动态目录树(原创)

    这篇文章主要讲解如何使用Ajax、Div、JavaScript、XML以及Servlet技术来创建一个可以动态加载、展示无限层级目录结构的交互式树形组件。这个组件在网页应用中广泛用于文件管理、组织结构显示、导航菜单等场景。 **...

    基于ASP的雨哲原创 树网程序.zip

    这个程序可能是由一位名为“雨哲”的开发者原创设计的,它可能包含了一个树形结构的网络应用程序,这种结构常用于展示层次关系数据,如组织结构、文件目录或分类系统。 在ASP中,开发者可以使用VBScript或JScript等...

    Vue3+element-plus-table-dragable(Sortable.js)实现表格拖动排序

    2022/09/02更新: ... 没有上网条件的可以在这里下载已经更新。 说明:本人前端小白不是什么骗子(我有4.5k多分没啥毛用),之前...看官方文档两天也不如直接看一个完整的实例。 需要安装依赖:npm i -S vuedraggable@next

    操作系统课程设计文件管理二级文件系统.doc

    例如,使用Java Swing或JavaFX构建GUI,通过树形控件展示目录结构,右键菜单实现文件操作。 软件运行环境应支持Linux系统,可能还需要开发环境如GCC或IDE(如Eclipse、IntelliJ IDEA)来编译和调试代码。设计完成后...

    ASP+ACCESS 网站

    总结来说,"ASP+ACCESS 网站"是一个基于ASP技术的动态网站,利用ACCESS数据库存储数据,模仿了北京汽车网站的功能。开发者可以从中学习到如何使用ASP编写服务器端脚本,如何与ACCESS数据库交互,以及如何构建动态...

    vc++ 应用源码包_1

    电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...

    vc++ 应用源码包_2

    电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...

    vc++ 应用源码包_6

    电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...

    vc++ 应用源码包_5

    电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...

    vc++ 应用源码包_3

    电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 CctryLog(web拦截网页帐号密码) 实现了一个控件去获得IHTMLDocument2接口,然后读取内容,匹配用户名与密码等。 CFile64_src 操作大...

Global site tag (gtag.js) - Google Analytics