-
树形菜单
2019-06-27 15:44:18动态树形菜单,也就是要根据数据库里面表的数据内容来进行动态加载树形菜单。而要做树形菜单的话,可以利用jquery.ztree控件搭建树形菜单简单又高效,因此分享一下做动态树形菜单的方法: 1.首先,我们要引用它的CSS...动态树形菜单,也就是要根据数据库里面表的数据内容来进行动态加载树形菜单。而要做树形菜单的话,可以利用jquery.ztree控件搭建树形菜单简单又高效,因此分享一下做动态树形菜单的方法:
1.首先,我们要引用它的CSS样式<link href="~/zTree/zTree_v3/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
2.接着我们要写HTML代码,我们要给一个容纳树形菜单的ul标签容器。
<ul id="tree" class="ztree" style=""></ul>
3.我们引用jquery.ztree控件里的三个JS。
<script src="~/zTree/zTree_v3/js/jquery.ztree.core.js"></script> <script src="~/zTree/zTree_v3/js/jquery.ztree.excheck.js"></script> <script src="~/zTree/zTree_v3/js/jquery.ztree.exedit.js"></script>
配置树形菜单的参数:
//配置树形var setting = { data: { simpleData: { enable: true } } }
请求控制器方法:
var zNodes = [ $.getJSON("IndustryTree", function (data) { $.fn.zTree.init($("#tree"), setting, data); }) ];
写控制器方法前,还要创建一个类:
public class Meatu { public int? id { get; set; } public string name { get; set; } public int? pId { get; set; } }
控制器方法:IndustryTree()
在数据库的表中要有父级ID:
效果图: -
树形菜单树形菜单树形菜单树形菜单
2009-01-16 11:13:52关于JS树形菜单的啊 网页关于JS树形菜单的啊 网页关于JS树形菜单的啊 网页关于JS树形菜单的啊 网页关于JS树形菜单的啊 网页关于JS树形菜单的啊 网页关于JS树形菜单的啊 网页关于JS树形菜单的啊 网页关于JS树形菜单的... -
树形菜单,,树形菜单,树形菜单,树形菜单
2010-01-31 22:14:59树形菜单树形菜单树形菜单树形菜单树形菜单树形菜单 -
react 树形菜单_EasyUI 树形菜单 – 树形菜单加载父/子节点
2021-01-17 12:01:09EasyUI 树形菜单 - 树形菜单加载父/子节点通常表示一个树节点的方式就是在每一个节点存储一个 parentid。 这个也被称为邻接列表模型。 直接加载这些数据到树形菜单(Tree)是不允许的。 但是我们可以在加载树形菜单...EasyUI 树形菜单 - 树形菜单加载父/子节点
通常表示一个树节点的方式就是在每一个节点存储一个 parentid。 这个也被称为邻接列表模型。 直接加载这些数据到树形菜单(Tree)是不允许的。 但是我们可以在加载树形菜单之前,把它转换为标准标准的树形菜单(Tree)数据格式。 树(Tree)插件提供一个 ‘loadFilter’ 选项函数,它可以实现这个功能。 它提供一个机会来改变任何一个进入数据。 本教程向您展示如何使用 ‘loadFilter’ 函数加载父/子节点到树形菜单(Tree)。
父/子节点数据[
{"id":1,"parendId":0,"name":"Foods"},
{"id":2,"parentId":1,"name":"Fruits"},
{"id":3,"parentId":1,"name":"Vegetables"},
{"id":4,"parentId":2,"name":"apple"},
{"id":5,"parentId":2,"name":"orange"},
{"id":6,"parentId":3,"name":"tomato"},
{"id":7,"parentId":3,"name":"carrot"},
{"id":8,"parentId":3,"name":"cabbage"},
{"id":9,"parentId":3,"name":"potato"},
{"id":10,"parentId":3,"name":"lettuce"}
]
使用 ‘loadFilter’ 创建树形菜单(Tree)$('#tt').tree({
url: 'data/tree6_data.json',
loadFilter: function(rows){
return convert(rows);
}
});
转换的实现function convert(rows){
function exists(rows, parentId){
for(var i=0; i
if (rows[i].id == parentId) return true;
}
return false;
}
var nodes = [];
// get the top level nodes
for(var i=0; i
var row = rows[i];
if (!exists(rows, row.parentId)){
nodes.push({
id:row.id,
text:row.name
});
}
}
var toDo = [];
for(var i=0; i
toDo.push(nodes[i]);
}
while(toDo.length){
var node = toDo.shift(); // the parent node
// get the children nodes
for(var i=0; i
var row = rows[i];
if (row.parentId == node.id){
var child = {id:row.id,text:row.name};
if (node.children){
node.children.push(child);
} else {
node.children = [child];
}
toDo.push(child);
}
}
}
return nodes;
}
-
ztree树形菜单、ztree树形菜单demo
2018-04-08 10:44:13ztree树形菜单demo -
js无限级树形菜单js无限级树形菜单js无限级树形菜单
2009-01-05 13:48:21js无限级树形菜单js无限级树形菜单js无限级树形菜单 -
XHTML树形菜单XHTML树形菜单
2010-10-14 09:59:03XHTML树形菜单XHTML树形菜单XHTML树形菜单 -
强大的jquery.ztree树形菜单插件支持多种树形菜单导航
2019-11-20 23:05:46强大的jquery.ztree树形菜单插件支持多种树形菜单导航 -
HTML树形菜单
2017-08-30 15:23:14树形菜单 -
php树形菜单链接,php树形菜单实例代码
2021-03-25 09:59:09这篇文章主要介绍了基于递归实现的php树形菜单代码,采用了递归的方法遍历节点构造出树形菜单,是非常实用的技巧,需要的朋友可以参考下本文实例讲述了基于递归实现的php树形菜单代码。分享给大家供大家参考。具体实现...这篇文章主要介绍了基于递归实现的php树形菜单代码,采用了递归的方法遍历节点构造出树形菜单,是非常实用的技巧,需要的朋友可以参考下
本文实例讲述了基于递归实现的php树形菜单代码。分享给大家供大家参考。具体实现方法如下:
开发电子商务网站的时候,做了这个显示树形菜单的功能,用的递归实现的PHP树形菜单函数。具体代码如下:
代码如下:public function procCategory($sid,$pid){
$return = array();
$key = 0;
static $arr = array(); //分类级别参考数组
$sql = "select cid,pcid,name from shop_goods_catalog where sid='{$sid}' and pcid = '{$pid}'";
$result = $this->db->query($sql);
while($row=$this->db->fetchArray($result)){
$nbsp = '';
if($row['pcid']==0){
$arr = array();
}
$arr[] = $row['pcid'];
//顶级分类不添加树形结构标识。
if($row['pcid']>0){
//根据分类级别添加树形结构标识
$key = array_search($row['pcid'],$arr);
for($i=0;$i
$nbsp .= ' ';
}
//重构分类级别参考数组
if(count($arr)>1&&count(array_keys($arr,$row['pcid']))>1){
$arr = array_slice($arr,0,$key+1);
}
}
$row['name'] = $nbsp.$row['name'];
$row['level'] = $key; //分类级别,0为顶级分类,1为二级分类,用于样式设定或其他需求
$return[] = $row;
$r = $this->procCategory($sid,$row['cid']);
$return = array_merge($return,$r);
}
return $return;
}
由于递归的效率相对较低,如果注重程序效率的话,不要用此方法,或者对此方法进行改进使用。
一下是php tree 无限分类代码,需要的朋友可以参考下。<?php
/**
by lenush;
*/
class Tree
{
var $data = array();
var $child = array(-1=>array());
var $layer = array(-1=>-1);
var $parent = array();
function Tree ($value)
{
$this->setNode(0, -1, $value);
} // end func
function setNode ($id, $parent, $value)
{
$parent = $parent?$parent:0;
$this->data[$id] = $value;
$this->child[$id] = array();
$this->child[$parent][] = $id;
$this->parent[$id] = $parent;
if (!isset($this->layer[$parent]))
{
$this->layer[$id] = 0;
}
else
{
$this->layer[$id] = $this->layer[$parent] + 1;
}
} // end func
function getList (&$tree, $root= 0)
{
foreach ($this->child[$root] as $key=>$id)
{
$tree[] = $id;
if ($this->child[$id]) $this->getList($tree, $id);
}
} // end func
function getValue ($id)
{
return $this->data[$id];
} // end func
function getLayer ($id, $space = false)
{
return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
} // end func
function getParent ($id)
{
return $this->parent[$id];
} // end func
function getParents ($id)
{
while ($this->parent[$id] != -1)
{
$id = $parent[$this->layer[$id]] = $this->parent[$id];
}
ksort($parent);
reset($parent);
return $parent;
} // end func
function getChild ($id)
{
return $this->child[$id];
} // end func
function getChilds ($id = 0)
{
$child = array($id);
$this->getList($child, $id);
return $child;
} // end func
} // end class
//new Tree(根目录的名字);
//根目录的ID自动分配为0
$Tree = new Tree('目录导航');
//setNode(目录ID,上级ID,目录名字);
$Tree->setNode(1, 0, '目录1');
$Tree->setNode(2, 1, '目录2');
$Tree->setNode(3, 0, '目录3');
$Tree->setNode(4, 3, '目录3.1');
$Tree->setNode(5, 3, '目录3.2');
$Tree->setNode(6, 3, '目录3.3');
$Tree->setNode(7, 2, '目录2.1');
$Tree->setNode(8, 2, '目录2.2');
$Tree->setNode(9, 2, '目录2.3');
$Tree->setNode(10, 6, '目录3.3.1');
$Tree->setNode(11, 6, '目录3.3.2');
$Tree->setNode(12, 6, '目录3.3.3');
//getChilds(指定目录ID);
//取得指定目录下级目录.如果没有指定目录就由根目录开始
$category = $Tree->getChilds();
//遍历输出
foreach ($category as $key=>$id)
{
echo $Tree->getLayer($id, '|-').$Tree->getValue($id)."
\n";}
?>
-
CSS树形菜单
2017-10-10 10:49:00前端树形菜单源码,前端树形菜单源码,前端树形菜单源码 -
经典的树形菜单源码经典的树形菜单源码
2010-08-05 15:14:17树形代码经典的树形菜单源码经典的树形菜单源码经典的树形菜单源码经典的树形菜单源码 -
java树形菜单_Java构建树形菜单
2021-02-12 09:48:35构建树形菜单效果图:支持多级菜单。 菜单实体类:public class Menu {// 菜单idprivate String id;// 菜单名称private String name;// 父菜单idprivate String parentId;// 菜单urlprivate String url;// 菜单图标...构建树形菜单
效果图:支持多级菜单。
菜单实体类:
public class Menu {
// 菜单id
private String id;
// 菜单名称
private String name;
// 父菜单id
private String parentId;
// 菜单url
private String url;
// 菜单图标
private String icon;
// 菜单顺序
private int order;
// 子菜单
private List
// ... 省去getter和setter方法以及toString方法
}
菜单一般需要排序,我们根据Menu的order字段进行排序:
/*
* 排序,根据order排序
*/
public Comparator
Comparator
@Override
public int compare(Menu o1, Menu o2) {
if(o1.getOrder() != o2.getOrder()){
return o1.getOrder() - o2.getOrder();
}
return 0;
}
};
return comparator;
}
生成树的方法:
public Map findTree(){
Map data = new HashMap();
try {//查询所有菜单
List
//根节点
List
for (Menu nav : allMenu) {
if(nav.getParentId().equals("0")){//父节点是0的,为根节点。
rootMenu.add(nav);
}
}
/* 根据Menu类的order排序 */
Collections.sort(rootMenu, order());
//为根菜单设置子菜单,getClild是递归调用的
for (Menu nav : rootMenu) {
/* 获取根节点下的所有子节点 使用getChild方法*/
List
nav.setChildren(childList);//给根节点设置子节点
}
/**
* 输出构建好的菜单数据。
*
*/
data.put("success", "true");
data.put("list", rootMenu);
return data;
} catch (Exception e) {
data.put("success", "false");
data.put("list", new ArrayList());
return data;
}
}
获取子菜单:
/**
* 获取子节点
* @param id 父节点id
* @param allMenu 所有菜单列表
* @return 每个根节点下,所有子菜单列表
*/
public List
//子菜单
List
for (Menu nav : allMenu) {
// 遍历所有节点,将所有菜单的父id与传过来的根节点的id比较
//相等说明:为该根节点的子节点。
if(nav.ParentId().equals(id)){
childList.add(nav);
}
}
//递归
for (Menu nav : childList) {
nav.setChildren(getChild(nav.getId(), allMenu));
}
Collections.sort(childList,order());//排序
//如果节点下没有子节点,返回一个空List(递归退出)
if(childList.size() == 0){
return new ArrayList
}
return childList;
}
最后返回的JSON串如下:
{
"success": "true",
"list": [
{
"id": "1",
"name": "Java",
"parentid": "0",
"url": "http://www.aliouchen.com",
"order": 1,
"children": [
{
"id": "2",
"name": "并发编程",
"parentid": "1",
"url": "http://www.aliouchen.com",
"order": 1,
"children": []
},
{
"id": "3",
"name": "多线程",
"parentid": "1",
"url": "http://www.aliouchen.com",
"order": 2,
"children": [
"id": "4",
"name": "Thread",
"parentid": "3",
"url": "http://www.aliouchen.com",
"order": 1,
"children":[]
]
}
]
},
{
"id": "5",
"name": "Python",
"parentid": "0",
"url": "http://www.aliouchen.com",
"order": 2,
"children": []
}
]
}
-
实现多层树形菜单
2021-04-03 22:16:34该源码是实现多层树形菜单,实现了多层树形菜单,点击某一级菜单,将会向下展开次一级菜单。代码扩展方便。 -
easyui树mysql_jQuery EasyUI 树形菜单 – 创建异步树形菜单 | 菜鸟教程
2021-01-20 02:38:30jQuery EasyUI 树形菜单 - 创建异步树形菜单为了创建异步的树形菜单(Tree),每一个树节点必须要有一个 'id' 属性,这个将提交回服务器去检索子节点数据。创建树形菜单(Tree)url="tree2_getdata.php">服务器端代码...