异步加载 tree,点一下节点,就发一下请求到后台,然后显示出得到的当前层级节点

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<script type="text/javascript" src="js/jquery-1.8.0.js" ></script>
<body>
<ul id="myTree"></ul> ///定义ztree要显示的容器标签 </body>
<script>
var myTreeNodes = []; //定义接收返回集合的容器,为了在后面init真正初始化树时,作为最后一个参数用
var IDMark_A = "_a"; //定义个变量,其实就是为了后面匹配tree自动生成的a标签(在这里做下说明而已,不定义直接在下面拼也行吧)
var mySetting = {
view:{
addDivDom: myyAddDivDom //自定义控件,这里是加入了复选框
},
data:{
key:title:"name", //设置title提示信息对应的属性名称 也就是节点相关的某个属性
children:"childNodes"
},
async:{
enable:true, //是否开启异步加载模式
type:'post',
url: myGetUrl,//得到请求路径的方法
dataFilter: myFilter //对于请求回来的数据进行预处理的方法
}
} //加入自定义的显示控件 (这里是文本框)
function myAddDivDom(tree,treeNode){
var aObj = $("#"+treeNode.tId+IDMark_A);///这个就是个选择器,选的是原节点所在的a标签(这是tree自己生成的a标签)
if(treeNode.myCheck=="1"){///这个是可以自己加判断,让指定的对象前加上复选框
var editStr = "<input type='checkbox' value='"+treeNode.id+"'onfocus='this.blur();'></input>";
aObj.before(editStr); ///before是jq的方法,意思是在调用者标签的签名加入参数(参数也可以是标签,和html()方法的参数是一样的)
}
} //得到请求路径
function myGetUrl(treeId,treeNode){
var firstId = "";//第一个节点对象的id
var url = "";
if(treeNode==null){ //第一次,加载树时发的请求
url = path+"xxx/loadNextTreeNodes.do?id="+firstId+"&otherParam"+otherParam;
}else{//树加载完成后,点击某个(有子节点的)节点后发出的请求
url = path + "xxx/loadNextTreeNodes.do?id="+treeNode.id+"&otherParam"+otherParam;
}
return url;
} //对返回的数据进行预处理
function myFilter(treeId,parentNode,childNodes){
for (var i=0,i<childNodes.length;i++) {
/*
下面等号左边的 childNodes[i] 的属性都是在 tree中要显示的每个节点的属性,
而右边的childNodes[i]的属性则表示从后台得到的对象集合中每个对象的真实属性
*/
childNodes[i].code=xxxx;
childNodes[i].open=true;
childNodes[i].name = childNodes[i].xxxName;
childNodes[i].xxx = childNodes[i].xxxxx; if(childNodes[i].hasChild==1){
childNodes[i].isParent = true;///要显示成树,集合中的数据必须要有个boolean类型的 isParent属性
//可以在后台对象属性上直接加上,也可以在预处理这里的js中根据条件加上这个属性
}
}
return childNodes;
} ///上面这些都是为了生成树的准备信息,下面这句才是真正生成树的代码(当然这句可以放在任意位置,比如最上面也可以)
$.fn.zTree.init($("#myTree"),mySetting,myTreeNodes);//参数1:容器对象 2:tree的setting设置 3:接收后台返回值的数组
/*
执行这句的时候,会自动 先执行 myGetUrl 方法,得到 url,然后自动发送这个url到后台请求数据(就和ajax一样,其实这句话里面就是发了一个ajax请求),
然后请求回来的 数据会自动先传入myFilter方法的childNodes参数中,并执行myFilter方法,
然后在加载tree的同时自动调用myAddDivDom方法,在对应的节点前拼好checkbox复选框,并显示在页面上。
*/ </script> <script>
//下面这些都是java代码
@ResponseBody
@RequestMapping("loadNextTreeNodes")
public void loadNextTreeNodes(){
List list=[];//假设后台有一个要展示为 tree的list集合
for(item:list){
item.setHasChild("0");
if(xxx){
item.setHasChild("1");
}
}
writeJson(list);//把list转成json写到前台
} //下面这个就是封装了个写json到前台的方法,供参考
public void writeJson(Object obj){
PrintWriter out = null;
try{
response.setContentType("");
response.setHeader("");
response.setHeader("");
out = response.getWriter();
out.print(new Gson().toJson(obj));
}catch(Exception e){ }finally{
try{
FileUtil.flushAndCloseWrite(out);//关闭流
}catch(e){
}
}
} </script>
</html>

异步ztree 加复选框 及相应后台处理的更多相关文章

  1. gridview列前加复选框需要注意的一点

    前言 获取gridview每一列前面的复选框,然后获取选中的这一行的id.aspx页面,我不喜欢用这个,有的公司用自己封装的,基本上都是用封装的,这是我知道的.也有用Repeater的.可能是因为gr ...

  2. 复选框 ajax取得后台页面

    首先判断是否勾选了复选框 $("input[name='product']").click(function () { if($(this).prop("checked& ...

  3. layui表单使用开关滑块和复选框,渲染后台数据方法

    提示:整个表格要在form标签内 定义开关模板 <div class="layui-form" lay-filter="layuiadmin-app-form-li ...

  4. ztree实现复选框单选功能

    /** * ztree的默认配置项 * */ var setting = { view: { selectedMulti: false //按住ctrl是否可以多选 }, check: { enabl ...

  5. JeeSite导出多条数据(加复选框)demo

    表格图: jsp: 后台: @RequiresPermissions("shwindow:advertisementPutInList:view") @RequestMapping ...

  6. 前台checkbox复选框提交到后台处理

    前台 <input type="hidden" id="tempString" name="tempString" /> < ...

  7. ExtJS4.2学习(五)表格渲染与复选框

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-10/174.html --------------- ...

  8. 组合框里添加复选框的方法(使用勾选的假象,用图片代替而已,并非QT原生支持)

    组合框可以看作是列表框和文本框的组合,因其占据的空间少,使用操作方便,常被界面设计人员用于界面开发设计中,在有限个输入的条件下,组合框常用来代替文本框,这样从用户使用角度来看,更趋人性化,所见即所得. ...

  9. 自定义复选框 checkbox 样式

    默认的复选框样式一般在项目中都很少用 ,看起来也丑丑的.这里提供一个优化样式后的复选框.原理就是隐藏掉默认样式,在用设计好的样式替代 html结构 <div> <input type ...

随机推荐

  1. rsync: chgrp "/.hosts.NBCxBB" (in test) failed: Operation not permitted (1)

    #记一次rsync出现的错误(网上基本都是说权限问题) #这并不是权限的问题,应为实际的文件已经传过去了,但是rsync就是会报这个错误,(虽然使用是正常的,但是看着就是不爽) [root@local ...

  2. Java多线程5:Synchronized锁机制

    一.前言 在多线程中,有时会出现多个线程对同一个对象的变量进行并发访问的情形,如果不做正确的同步处理,那么产生的后果就是“脏读”,也就是获取到的数据其实是被修改过的. 二.引入Synchronized ...

  3. java、二维数组详解!

    /* java 二维数组的概念 使用方法! 1.什么是二维数组? 答案:数组的数组! 他的每一个元素都是数组!二维数组是(存储一维数组的)一维数组. 2.如何定义?(以二维数组为列) int arr[ ...

  4. SpringBoot之整合Mybatis范例

    依赖包: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http:/ ...

  5. excel 公式 insert 语句

    ="insert into tb_fdn_deviceaccount (zdmc,czmc,sbbh,sbmc,SZCS,SBFLMC,SBLXMC,SBGG,SBYZ,SBJZ,SBXH, ...

  6. spawn

    转载:http://motioo.blog.163.com/blog/static/117718291200954102830215/ 并行计算使用的节点数在开始运行程序时进行指定. 学习了FFT之后 ...

  7. Build 2017 Revisited: .NET, XAML, Visual Studio

    For the next couple months we're going to revisit Build 2017, each post focusing on different aspect ...

  8. ubuntu6.04安装

    一.在windows操作系统下准备ubuntu系统的安装盘 1. 下载ubuntu的ISO文件 这一步相对简单,网络上面有很多的链接下载.这里贴一个ubuntu的官方网站链接,可以下载到ubuntu ...

  9. IDEA下载依赖时提示 resolving dependencies of xxx, yyy

    IDEA下载依赖时提示 resolving dependencies of xxx, yyy ,卡住不动 使用Maven命令可以更清楚地分析问题,在IDEA命令行窗口执行mvn compile命令,提 ...

  10. BZOJ3502PA2012Tanie linie&BZOJ2288[POJ Challenge]生日礼物——模拟费用流+链表+堆

    题目描述 n个数字,求不相交的总和最大的最多k个连续子序列. 1<= k<= N<= 1000000. 输入 输出 样例输入 5 2 7 -3 4 -9 5 样例输出 13   根据 ...