一:jQuery.TreeView插件简介
该插件的特点:
1、支持静态的树,即一次性将全部数据加载到客户端。
2、支持异步树,即一次只加载一级或若干级节点,子节点可以异步加载数据。
3、支持节点级联。
4、能够承载大数据量,并性能表现优异。
5、支持主流浏览器。
6、使用方便
官方网站:
http://bassistance.de/jquery-plugins/jquery-plugin-treeview/
二:jQuery.TreeView插件使用
1.普通加载 页面文件.html
<ul id="navigation">
<li><a href="#aaa">Item 1</a>
<ul>
<li><a href="?1.0">Item 1.0</a>
<ul>
<li><a href="?1.0.0">Item 1.0.0</a></li>
</ul>
</li>
<li><a href="?1.1">Item 1.1</a></li>
</ul>
</li>
</ul>
JS代码
<script type="text/javascript">
$(document).ready(function() {
$("#navigation").treeview({
persist: "cookie",
collapsed: true,
unique: true
});
});
</script>
效果:
2.treeview的一些属性
Options说明:
1、animated
设置动画效果.
Eg:$(".selector").treeview({ animated: "fast" })
2、collapsed
Treeview节点是否收缩,true:收缩,false:展开
$(".selector").treeview({ collapsed: true })
3、control
TreeView显示的容器
$(".selector").treeview({ control: “#container” })
4、unique
设置是否某一时刻只展开一个节点,
true:只展开一个,false:可以同时展开其他节点。
$(".selector").treeview({ unique: true })
5、toggle
$(".selector").treeview({ toggle: function() { console.log(this + " has been toggled"); } })
$(".selector").treeview({ persist: "location" })
8、add
var tree = $(".selector").treeview(); $(".button").click(function() { var newSublist = $("<li><span class='folder'>New Sublist</span><ul>" + "<li><span class='file'>Item1</span></li>" + "<li><span class='file'>Item2</span></li></ul></li>").appendTo(tree); tree.treeview({ add: newSublist }); });
2:添加一个节点 效果:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Demo2.aspx.cs" Inherits="treeview_MyDemo_Demo2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link rel="stylesheet" href="../jquery.treeview.css" />
<link rel="stylesheet" href="screen.css" />
<script src="../lib/jquery.js" type="text/javascript"></script>
<script src="../lib/jquery.cookie.js" type="text/javascript"></script>
<script src="../jquery.treeview.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// second example
$("#browser").treeview();
$("#add").click(function() {
var branches = $("<li><span class='folder'>New Sublist</span><ul>" +
"<li><span class='file'>Item1</span></li>" +
"<li><span class='file'>Item2</span></li></ul></li>").appendTo("#browser");
$("#browser").treeview({
add: branches
});
branches = $("<li class='closed'><span class='folder'>New Sublist</span><ul><li><span class='file'>Item1</span></li><li><span class='file'>Item2</span></li></ul></li>").prependTo("#folder21");
$("#browser").treeview({
add: branches
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<h4>Sample 1 - default</h4>
<ul id="browser" class="filetree">
<li><span class="folder">Folder 1</span>
<ul>
<li><span class="file">Item 1.1</span></li>
</ul>
</li>
<li><span class="folder">Folder 2</span>
<ul>
<li><span class="folder">Subfolder 2.1</span>
<ul id="folder21">
<li><span class="file">File 2.1.1</span></li>
<li><span class="file">File 2.1.2</span></li>
</ul>
</li>
<li><span class="file">File 2.2</span></li>
</ul>
</li>
<li class="closed"><span class="folder">Folder 3 (closed at start)</span>
<ul>
<li><span class="file">File 3.1</span></li>
</ul>
</li>
<li><span class="file">File 4</span></li>
</ul>
<button id="add">Add!</button>
</form>
</body>
</html>
3.动画效果
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Demo3.aspx.cs" Inherits="treeview_jquery_treeview_MyDemo_Demo3" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link rel="stylesheet" href="../jquery.treeview.css" />
<link rel="stylesheet" href="screen.css" />
<script src="../lib/jquery.js" type="text/javascript"></script>
<script src="../lib/jquery.cookie.js" type="text/javascript"></script>
<script src="../jquery.treeview.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// third example
$("#red").treeview({
animated: "fast",
collapsed: true,
unique: true,
persist: "cookie",
toggle: function() {
alert("ok");
//window.console && console.log("%o was toggled", this);
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<h4>Sample 2 - fast animations, all branches collapsed at first, red theme, cookie-based persistance</h4>
<ul id="red" class="treeview-red">
<li><span>Item 1</span>
<ul>
<li><span>Item 1.0</span>
<ul>
<li><span>Item 1.0.0</span></li>
</ul>
</li>
<li><span>Item 1.1</span></li>
<li><span>Item 1.2</span>
<ul>
<li><span>Item 1.2.0</span>
<ul>
<li><span>Item 1.2.0.0</span></li>
<li><span>Item 1.2.0.1</span></li>
<li><span>Item 1.2.0.2</span></li>
</ul>
</li>
<li><span>Item 1.2.1</span>
<ul>
<li><span>Item 1.2.1.0</span></li>
</ul>
</li>
<li><span>Item 1.2.2</span>
<ul>
<li><span>Item 1.2.2.0</span></li>
<li><span>Item 1.2.2.1</span></li>
<li><span>Item 1.2.2.2</span></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><span>Item 2</span>
<ul>
<li><span>Item 2.0</span>
<ul>
<li><span>Item 2.0.0</span>
<ul>
<li><span>Item 2.0.0.0</span></li>
<li><span>Item 2.0.0.1</span></li>
</ul>
</li>
</ul>
</li>
<li><span>Item 2.1</span>
<ul>
<li><span>Item 2.1.0</span>
<ul>
<li><span>Item 2.1.0.0</span></li>
</ul>
</li>
<li><span>Item 2.1.1</span>
<ul>
<li><span>Item 2.1.1.0</span></li>
<li><span>Item 2.1.1.1</span></li>
<li><span>Item 2.1.1.2</span></li>
</ul>
</li>
<li><span>Item 2.1.2</span>
<ul>
<li><span>Item 2.1.2.0</span></li>
<li><span>Item 2.1.2.1</span></li>
<li><span>Item 2.1.2.2</span></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="open"><span>Item 3</span>
<ul>
<li class="open"><span>Item 3.0</span>
<ul>
<li><span>Item 3.0.0</span></li>
<li><span>Item 3.0.1</span>
<ul>
<li><span>Item 3.0.1.0</span></li>
<li><span>Item 3.0.1.1</span></li>
</ul>
</li>
<li><span>Item 3.0.2</span>
<ul>
<li><span>Item 3.0.2.0</span></li>
<li><span>Item 3.0.2.1</span></li>
<li><span>Item 3.0.2.2</span></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</form>
</body>
</html>
4.同时格式化两个树
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Demo4.aspx.cs" Inherits="treeview_jquery_treeview_MyDemo_Demo4" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link rel="stylesheet" href="../jquery.treeview.css" />
<link rel="stylesheet" href="screen.css" />
<script src="../lib/jquery.js" type="text/javascript"></script>
<script src="../lib/jquery.cookie.js" type="text/javascript"></script>
<script src="../jquery.treeview.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
// fourth example
$("#black, #gray").treeview({
control: "#treecontrol",
persist: "cookie",
cookieId: "treeview-black"
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<h4>Sample 3 - two trees with one tree control, black and gray theme, cookie-based persistance</h4>
<div id="treecontrol">
<a title="Collapse the entire tree below" href="#"><img src="../images/minus.gif" /> Collapse All</a>
<a title="Expand the entire tree below" href="#"><img src="../images/plus.gif" /> Expand All</a>
<a title="Toggle the tree below, opening closed branches, closing open branches" href="#">Toggle All</a>
</div>
<ul id="black" class="treeview-black">
<li>Item 1</li>
<li>
<span>Item 2</span>
<ul>
<li>
<span>Item 2.1</span>
<ul>
<li>Item 2.1.1</li>
<li>Item 2.1.2</li>
</ul>
</li>
<li>Item 2.2</li>
<li class="closed">
<span>Item 2.3 (closed at start)</span>
<ul>
<li>Item 2.3.1</li>
<li>Item 2.3.2</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul id="gray" class="treeview-gray">
<li>Item 1</li>
<li>
<span>Item 2</span>
<ul>
<li class="closed">
<span>Item 2.1 (closed at start)</span>
<ul>
<li>Item 2.1.1</li>
<li>Item 2.1.2</li>
</ul>
</li>
<li>Item 2.2.1</li>
<li>Item 2.2.2</li>
<li>Item 2.2.3</li>
<li>Item 2.2.4</li>
<li>Item 2.2.5</li>
<li>Item 2.2.6</li>
<li>Item 2.2.7</li>
<li>Item 2.2.8</li>
<li>
<span>Item 2.3</span>
<ul>
<li>Item 2.3.1</li>
<li>Item 2.3.2</li>
<li>Item 2.3.3</li>
<li>Item 2.3.4</li>
<li>Item 2.3.5</li>
<li>Item 2.3.6</li>
<li>Item 2.3.7</li>
<li>Item 2.3.8</li>
<li>Item 2.3.9</li>
</ul>
</li>
<li>
<span>Item 2.4</span>
<ul>
<li>Item 2.4.1</li>
<li>Item 2.4.2</li>
<li>Item 2.4.3</li>
<li>Item 2.4.4</li>
<li>Item 2.4.5</li>
<li>Item 2.4.6</li>
<li>Item 2.4.7</li>
<li>Item 2.4.8</li>
<li>Item 2.4.9</li>
</ul>
</li>
</ul>
</li>
<li>Item 3</li>
</ul>
</form>
</body>
</html>
9、异步树的加载
jquery.treeview.async用于在页面显示一个树形菜单,其特点在于所有节点都是异步获取的(只加载所需的节点,避免一次性加载全部导致客户端浏览器卡死),服务器端返回json格式的对象数组即可。每个json对象可以包含如下属性:
<script src="../lib/jquery.js" type="text/javascript"></script>
<script src="../lib/jquery.cookie.js" type="text/javascript"></script>
<script src="../jquery.treeview.js" type="text/javascript"></script>
<script src="../jquery.treeview.async.js" type="text/javascript"></script>
<div id="main">
<ul>
<li><a href=".">Main Demo</a></li>
<li><a href="source.phps">Server component used</a></li>
</ul>
<h4>Lazy-loading tree</h4>
<ul id="black">
</ul>
</div>
Step3:前台JS
<script type="text/javascript">
$(document).ready(function(){
$("#black").treeview({
url: "source.aspx"
})
});
</script>
protected void Page_Load(object sender, EventArgs e)
{
//代表首次加载
if (Request["root"] != null && Request["root"].ToString() == "source")
{
Response.Write("[" + "{'text':'根节点1','id':'root1','hasChildren':'true'},{'text':'根节点2','id':'root2','hasChildren':'true'}" + "]");
}
else
{
if (Request["root"] != null) //说明点击的是root1
{
string id = Request["root"].ToString();
if (id=="root1")
Response.Write("[{'text':'根节点1-子节点1','id':'root1-child1'},{'text':'根节点1-子节点2','id':'root1-child2'}]");
else if (id=="root2")
Response.Write("[{'text':'根节点2-子节点1','id':'root2-child1'},{'text':'根节点2-子节点2','id':'root2-child2'}]");
}
}
}
效果:
代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TreeViewAsyncLoadDemo.aspx.cs" Inherits="TreeViewAsyncLoadDemo" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="jquery.treeview/jquery-treeview/jquery.treeview.css" rel="stylesheet"
type="text/css" />
<script src="jquery.treeview/jquery-treeview/lib/jquery.js" type="text/javascript"></script>
<script src="jquery.treeview/jquery-treeview/lib/jquery.cookie.js" type="text/javascript"></script>
<script src="jquery.treeview/jquery-treeview/jquery.treeview.js" type="text/javascript"></script>
<%-- <script src="jquery.treeview/jquery-treeview/jquery.treeview.async.js" type="text/javascript"></script>--%>
<script src="jquery.treeview/jquery-treeview/jquery.treeview.async.plug.js" type="text/javascript"></script>
<script type="text/javascript">
$().ready(function() {
$("#black").treeview({
url: "HandleTreeViewAsyncLoadDemo.aspx"
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="main" style="float:left;width:200px;">
<ul id="black">
</ul>
</div>
<div id="divRight" style="float:left">
<!--扩展的插件 能添加两个属性 URL 和 target-->
<iframe id="myiframe" name="myiframe" style="width:500px;height:500px;display:block" src=""></iframe>
</div>
</form>
</body>
</html>
后台:
protected void Page_Load(object sender, EventArgs e)
{
if (Request["root"] != null)
{
string id = Request["root"].ToString();
if (id == "source") //说明是第一次请求数据
{
Response.Write("[{'text':'根节点1','id':'root1','hasChildren':'true'},{'text':'根节点2','id':'root2','hasChildren':'true'}]");
}
else if (id == "root1") //说明请求根节点1下面的数据
{
Response.Write("[{'text':'根节点1-子节点1','url':'http://www.google.cn','target':'_blank'},{'text':'根节点1-子节点2',url:'MyFrame.htm','target':'myiframe'}]");
}
else if (id == "root2") //说明请求根节点2下面的数据
{
Response.Write("[{'text':'根节点2-子节点1'},{'text':'根节点2-子节点2'}]");
}
}
}
jQuery.treeview.async.plug.js扩展插件
利用此插件可以让后台返回的json数据,多两个属性,
url,target.
形如:
"[{'text':'根节点1-子节点1','url':'http://www.google.cn','target':'_blank'},{'text':'根节点1-子节点2',url:'MyFrame.htm','target':'myiframe'}]"