Jquery树形控件 $.fn.zTree.init
https://www.cnblogs.com/jin-/p/4646202.html
asp.net 树形控件 $.fn.zTree.init
在网页中通过jquery脚本来构筑树形控件将是一个不错的选择,比如有一个文本框,当鼠标点击的时候,像弹出一个下拉框一样弹出一个树形控件,
这似乎是一个不错的控制。下面主要讲讲这种树形控件的实现。
为了能使用这种控件,需要中网上下载这个控件的脚本,然后引用到页面中
<script src="/Scripts/jquery.ztree.core-3.5.js"></script>
<script src="/Scripts/jquery.ztree.excheck-3.5.js"></script>
当然还有关于这个控件的样式表
<link href="~/Style/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
这些都可以到网上下载。
首先新建一个网页,添加一个文本框,页面代码如下:

<asp:TextBox runat="server" ID="CitySel" ReadOnly="True" Style="width: 135px;" placeholder="选择地区" onclick="ShowAreaTree(); "></asp:TextBox>
<asp:HiddenField runat="server" ID="HiddenAreaTreeSelID" />
<div id="AreaTreeContent" class="menuContent" style="display: none; position: absolute; margin-left:32.7%;margin-top: 45px; top:0px;left:0px;width:135px;">
<ul id="AreaTree" class="ztree" style="margin-top: 0; width: 135px; height: 300px;"></ul>
</div>

属性placeholder可以使得文本框中有一个默认的文本,但是在鼠标进入这个文本框后,这个默认文本会自动消失。如果不输入数据,待鼠标离开后,这
个默认文本又出现了。HiddenField是一个隐藏域,用来保存选项的code或ID。 ul就是树形控件的节点了。
界面设计好了,现在需要实现的功能是,在页面加载完成后,自动的为这个树形控件填充数据。这同样是通过脚本来完成。

<script type="text/javascript">
$(function () {
$.ajax({
url: "../../ChannelContent/SystemManage/UserManage_JSON.aspx?PostType=AreaTree",
datatype: "json",
context: document.body,
success: function (data) {
$.fn.zTree.init($("#AreaTree"), Areasetting, eval("(" + data + ")"));
}
});
});
</script>

$(function (){})这个函数是在页面加载完成后会自动执行的一个脚本函数。$.ajax可以将业务逻辑转移到url指定的页面的后台代码中去执行,这个页面实际上就是一个空页面,上面也没有。
执行完成后返回的数据放到data中,然后通过$.fn.zTree.init来填充树形控件。Areasetting稍后介绍,这里补充一点关于$.ajax业务逻辑转移的方法。
在UserManage_JSON页面的load方法中,通过string postType = Request["PostType"];来接收传递过来的参数PostType,在load方法的代码如下:
IList<ContentTree> bwAreas = BwAreaManage.GetAreaTree(); string BwAreaJson = JsonConvert.SerializeObject(bwAreas);//将对象转换为jason字符串 Response.Write(BwAreaJson);//返回查询的结果
GetAreaTree函数:

public virtual IList<ContentTree> GetAreaTree()
{
IList<ContentTree> Result = new List<ContentTree>(); ContentTree bwArea = new ContentTree();
bwArea.id = "0";
bwArea.name = ConfigurationManager.AppSettings["AreaTreeRoot"];
bwArea.pId = "-1";
bwArea.open = true;
Result.Add(bwArea); IList<BWAreaEntity> BwAreaList = bwAreaDataAccess.GetAreas(2);//从数据库中获取数据 foreach (BWAreaEntity Area in BwAreaList)
{
ContentTreeEntity newArea = new ContentTreeEntity();
//下面的name和ID是必须要有的,用于显示数据
newArea.id = Area.forgCityCode.ToString();
newArea.name = Area.FCityName;
newArea.pId = Area.ftopId.ToString();
if (Area.ftopId == 0)
{
newArea.open = true;
}
else
{
newArea.open = false;
} Result.Add(newArea);
} return Result;
}

上面的BwAreaJson 是一个jason字符串,内容如图:
在返回这个字符串后,程序又回到了脚本中了。

var Areasetting = {
view: {
dblClickExpand: false
},
data: {
simpleData: {
enable: true
} },
callback: {
onClick: onAreaTreeClick//当选择树中的节点时,调用的函数
}
};

关于Areasetting 的格式可以到网上去查,这里不做解释。
脚本函数onAreaTreeClick:

function onAreaTreeClick(e, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj("AreaTree"),
nodes = zTree.getSelectedNodes(),
v = "";
var SeleValue;
nodes.sort(function compare(a, b) { return a.id - b.id; });
for (var i = 0, l = nodes.length; i < l; i++) {
v += nodes[i].name + ",";
SeleValue = nodes[i].id;
}
if (v.length > 0) v = v.substring(0, v.length - 1);
var cityObj = $("#<%=CitySel.ClientID%>");
cityObj.attr("value", v);//这里是将选中项的值写到文本框中
$("#<%=HiddenAreaTreeSelID.ClientID%>").val(SeleValue);
var townCityCode = SeleValue.toString().substr(0, 6);//将选中项的值写到隐藏域 HideAreaTree();
}


//显示地区选择树
function ShowAreaTree() {
//定义下拉树展示时位置
$("#AreaTreeContent").slideDown("fast");//slideDown使用淡出效果来显示被选元素
$("body").bind("mousedown", onBodyDown);//bind() 方法为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。鼠标按下时执行onBodyDown
}
function HideAreaTree() {
$("#AreaTreeContent").fadeOut("fast");//fadeOut使用淡出效果来隐藏被选元素
$("body").unbind("mousedown", onBodyDown);
}
function onBodyDown(event) {
if (!(event.target.id == "AreaTreeContent" || $(event.target).parents("#AreaTreeContent").length > 0)) {
HideAreaTree();
}
}

OK,到这里,整个树形控件就构筑完了,代码自己慢慢研究吧,看一下效果
Jquery树形控件 $.fn.zTree.init的更多相关文章
- asp.net 树形控件 $.fn.zTree.init
在网页中通过jquery脚本来构筑树形控件将是一个不错的选择,比如有一个文本框,当鼠标点击的时候,像弹出一个下拉框一样弹出一个树形控件,这似乎是一个不错的控制.下面主要讲讲这种树形控件的实现.为了能使 ...
- jQuery树形控件zTree使用小结
作者:Fonour 字体:[增加 减小] 类型:转载 时间:2016-08-02我要评论 这篇文章主要为大家详细介绍了jQuery树形控件zTree使用方法,zTree树插件的基本使用方法,感兴趣的小 ...
- jQuery树形控件zTree使用
http://www.cnblogs.com/AutumnRhyme/p/5915769.html .................................................. ...
- jQuery树形控件zTree
初始化如下: function zTreeInit(){ parentCode = ""; setting = { view: { dblClickExpand: false, s ...
- ztree jquery 树 控件
插件地址:http://www.ztree.me 数据:[{"id":1,"pId":-1,"name":"根目录"}, ...
- jQuery树形菜单,使用zTree插件,异步载入 & 编辑功能&Check 共存
一.下载zTree插件 地址:http://www.ztree.me 二.HTML代码 <%@ Page Language="C#" AutoEventWireup=&quo ...
- jquery 分页控件2
jquery 分页控件(二) 上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的 ...
- js树形控件
js树形控件 ztree http://www.treejs.cn/
- Web应用程序开发,基于Ajax技术的JavaScript树形控件
感谢http://www.cnblogs.com/dgrew/p/3181769.html#undefined 在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用, ...
随机推荐
- python学习笔记:第八天(模块)
Python3 模块 脚本上是用 python 解释器来编程,如果从 Python 解释器退出再进入,那么定义的所有的方法和变量就都消失了. 为此 Python 提供了一个办法,把这些定义存放在文件中 ...
- hdu 4704 sum(费马小定理+快速幂)
题意: 这题意看了很久.. s(k)表示的是把n分成k个正整数的和,有多少种分法. 例如: n=4时, s(1)=1 4 s(2)=3 1,3 3,1 2,2 s ...
- [acm]HDOJ 2064 汉诺塔III
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=2064 汉诺塔变种,只能从中间专业,递归关系为:f(n)=3*f(n-1)+2. //汉诺塔变种,只能 ...
- 为VSFTP用户指定登录后的目录.原创测试通过.
VSFTP用户目录指定1修改VSFTP配置文件Vi /etc/vsftpd/vsftp.conf #启动chroot列表chroot_list_enable=YES#指定列表位置chroot_lis ...
- 人工智能实践:linux 和 python 基础简介
linux下的目录 绝对路径:是以根目录(" / ")为起点的完整路径,以你所要到的目录为终点. 相对路径:是你当前的目录(" .")为起点的路径,以你所要到的 ...
- <meta> 标记汇总
1. <meta name="viewport" content="width=device-width, initial-scale=1"> v ...
- 【转】Android SDCard操作(文件读写,容量计算)
android.os.Environment 提供访问环境变量 java.lang.Object android.os.Environment Environment 静态方法: 方法 : ...
- TCP 协议的消息
TCP: SYN ACK FIN RST PSH URG 详解 TCP的三次握手是怎么进行的了:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并 ...
- 1、CDH集群搭建
一.准备工作 1.系统环境 系统centos6.5 节点三台: 192.168.1.130 192.168.1.131 192.168.1.132 1.所有节点关闭防火墙 service iptabl ...
- SpringBoot使用拦截器无效
附上代码: public class WendaWebConfiguration extends WebMvcConfigurerAdapter { @Autowired PassportInterc ...