爽快些 一下把所有的内容都放上来吧
下面放的一段是我通过ajax获得json格式的字符串,并把它展示出来,因为格式的风格的限制这里只列出了二级和三级别结点。
上面json字符串的转换会通过另一篇博客与大家分享,是个appache的一个类,支持循环引用检测,使用数据结构中的栈来解决这个问题。
js展示代码如下:后面让同事加了一些点击后设置样式的功能,有点乱,不过重心还是在于用js递归所有结点;
function toURL(url,path,obj) {
$(".left_zinav").removeClass("left_zinav").addClass("left_world02");
$(obj).removeClass().addClass("left_zinav");
parent.topframe.toURL(url,path);
}
var menu={};//菜单
menu.data={};//菜单数据
menu.html='';//菜单里包含的html字符串 通过递归拼接
menu.sethtml=function(htm){
menu.html=htm;
}
//从服务器加载数据
menu.loadData=function(){
$.getJSON("{pageContext.request.contextPath}/login!loadMenu.action",
function(json){
if(json.suc&&json.single.children){//加载成功
menu.data=json.single.children[0];
menu.write(json.single.children[0]);
menu.show();
}else{//加载失败
window.top.location="${pageContext.request.contextPath}/login!loginUI.action";
}
}
);
}
//展示
menu.show=function(){
$('#targ').html(this.html);
}
var tmp=''
var childnum='';
var num=0;
var childstyle='';
var numUrl=0;
//拼接html
menu.write=function(nd){
if(nd.grade==1){
childnum=nd.children.length;
}
if(nd.grade==2){
tmp=nd.text;
if(num==0){
childstyle="block";
}else{
childstyle="none";
}
menu.sethtml(menu.html+'<div class="left_nav" onclick="Menu(\''+num+'\',\''+childnum+'\')" ><div class="left_world01">'+nd.text+"</div></div><div style='display:"+childstyle+";' id='children"+num+"'>");
num++;
}else if(nd.grade==3){
tmp=' '+tmp+' > '+nd.text;
menu.sethtml(menu.html+'<div class="left_world02" style="cursor:pointer;" onclick="toURL(\''+nd.extend.url+'?t=menu\',\''+tmp+'\',this);">'+nd.text+'</div>');
tmp=nd.text;
}
if(nd.children){
for(var d in nd.children){
menu.write(nd.children[d]);
}
menu.sethtml(menu.html+"</div>");
}
}
//准备完成后加载数据
$(document).ready(
function(){
menu.loadData();
}
);
function Menu(m,count){
for(var i=0;i<count;i++){
var children=document.getElementById('children'+i).style;
if(i==m){
if(children.display=='none'){
document.getElementById('children'+i).style.display='block';
}else{
document.getElementById('children'+i).style.display='none'
}
}else {
document.getElementById('children'+i).style.display='none';
}
}
}
加载数据的方式很多,可以用ajax异步加载过来,也可以用dwr之前通过dwr进行加载后来改成目前这种了 ,
也可以由后台生成的json格式数据放到request里再用eval,或json转化工具进行转化,再进行树的装配与展示。
最方便是用下面这种了:
用了ligerui(基于jquery的ui框架)的树型工具:
$("#tree1").ligerTree({
data: data,checkbox: false,nodeWidth: 200,
onSelect:function(data,target){
var ex=data.data.extend;
if(ex){
$('#label').val(data.data.extend.label);
$('#descript').val(data.data.extend.descript);
}
},
onCancelselect:function(){
$('#label').val('');
$('#descript').val('');
}
});
上面用到的data可以通过以上说过的方式来获取,也可以配置一个url地址。
如 一个下拉列表,列表中的内容是一棵树:
$("#movetxt").ligerComboBox({
width: 180,
selectBoxWidth: 200,
selectBoxHeight: 200, valueField: 'text',treeLeafOnly:false,
valueField:'id',
tree: { url:"${pageContext.request.contextPath}/depart!getDepartTree.action?instance.departId=1&r="+Math.random(),checkbox:false
}
});
关于树型结构的处理到这里就已经结束了,谢谢大家!!
分享到:
相关推荐
在IT行业中,构建树形结构的数据展示是一种常见的需求,特别是在Web应用中,如导航菜单、组织架构图等。本项目“BS实现树形结构(jsp+mysql数据库+设计文档)”提供了一个完整的解决方案,包括源码、开发文档以及SQL ...
jsTree 是一个强大的 JavaScript 库,专用于在 Web 页面上创建交互式的树形结构。它基于纯 JavaScript 编写,无需依赖其他库,因此对于初学者和有经验的开发者来说,都是一个易于理解和使用的工具。通过这个库,你...
树形结构在很多场景下都是非常有用的,比如数据展示、导航菜单等,因此掌握Struts2中如何构建和操作树形结构是提升开发效率的关键。 首先,理解树形结构的基本概念是必要的。树形结构是一种数据结构,它由节点(或...
本文将深入探讨如何使用纯CSS来创建一个可无限扩展的族谱树形结构,适用于HTML5、PHP以及Web开发等多个领域,并提供关于如何进行二次开发以适应个人需求的指导。 首先,CSS(Cascading Style Sheets)是一种样式表...
在这个场景中,我们看到的"layui dtree树形结构"指的是在用户点击一个文本框时,会弹出一个下拉框,下拉框内显示的是一个层次分明的树形结构。这种设计可以方便用户从多个选项中选择一个或多个层级相关的项目。 ...
在Web开发中,树形结构常常用于展示层级关系的数据,例如组织结构、文件系统等。`highchecktree`是一个专门针对这种情况设计的jQuery插件,它能高效地处理大量数据并提供带有复选框的功能,使得用户可以进行多级选择...
在IT领域,无限级树形结构是一种常见的数据组织方式,特别是在构建层次化数据展示或管理的系统时。本文将深入探讨无限级树形结构的概念、实现方式,以及如何结合Asp.Net技术,利用TreeView控件进行展示,并涵盖增、...
【标题】"jsp实现树形结构dtree"涉及的核心技术主要集中在JSP(JavaServer Pages)、JavaScript以及一种叫做dtree的树形展示库。这里,我们将会深入探讨这些技术及其在构建树形结构中的应用。 首先,JSP是Java的一...
Servlet负责处理请求,可能包括从数据库或者其他数据源获取菜单数据,然后将这些数据组织成树形结构。接着,JSP页面接收Servlet传递的数据,并将其转换为HTML,呈现为树形菜单。 实现步骤如下: 1. **数据模型**:...
本文将详细解析如何利用jQuery构建一个树形结构菜单,并将其应用于Spring MVC框架,以便从后端获取JSON数据并动态展示为树形菜单。 首先,让我们了解一下jQuery的树形结构菜单。在网页设计中,树形结构菜单通常用于...
本项目"easy ui tree 前后端树形结构项目 权限管理demo"提供了一个完整的解决方案,使用了Easy UI Tree库来实现前端的树形结构,并结合SSM(Spring、SpringMVC、MyBatis)框架和MySQL数据库进行后端处理。...
总之,"C#网页源码查看器"提供了一个学习和实践C# HTML解析以及树形结构展示的宝贵机会,对于提升开发者在Web开发领域的技能大有裨益。通过深入研究源代码,可以掌握如何利用C#处理和解析HTML,以及如何构建直观易用...
在H5移动端开发中,部门树展示是一种常见的需求,它用于组织结构的呈现,比如公司内部的部门架构、员工层级关系等。这种功能通常应用于企业内部管理系统或者协作平台,便于用户快速查找和理解组织结构。下面我们将...
本项目"ztree树形结构+mysql完整"结合了ZTree的功能与MySQL数据库的使用,提供了一个完整的解决方案,包括数据存储、查询以及前端交互。 首先,ZTree的核心特性在于其丰富的API和可定制性。它支持动态加载、节点...
可以创建一个JavaBean来存储和管理树形结构的数据,然后在JSP页面上使用`<jsp:useBean>`标签来实例化和操作这个JavaBean。通过设置属性和方法来动态地构建和更新树形结构。 #### 3.2 使用JSTL (JavaServer Pages ...
1. **Bootstrap Treeview组件**:`bootstrap-treeview.js`是用于创建树形结构的JavaScript库,它可以展示多级嵌套的节点,每个节点可以包含子节点,通过折叠/展开操作来管理视图。在下拉框中使用时,用户可以逐级...
在现代Web开发中,树形结构是一种常见的数据展示形式,广泛应用于文件系统、组织架构、菜单导航等场景。通过JavaScript实现树形结构不仅可以增强用户体验,还能提高前端开发效率。本篇文章将基于一份JavaScript编写...
在IT行业中,尤其是在前端开发领域,树形结构是一种常见的数据展示方式,用于组织层次化信息。树形结构通常由节点组成,每个节点可以有子节点,形成一个分层的结构,便于用户理解和操作。在本案例中,我们关注的是两...
它可能包含HTML、CSS和JavaScript代码,展示了如何将JavaScript与HTML结构结合,创建一个完整的Web树形菜单。开发者可以通过分析这些文件,学习如何定义树形菜单的样式,以及如何使用JavaScript处理用户的交互。 ...
在IT领域,动态树形结构是一种常见的用户界面元素,它被广泛用于展现层次化数据,如文件系统、组织架构或数据库中的分类数据。在这种结构中,节点可以展开或折叠,以便用户能方便地浏览和操作数据。在本案例中,我们...