异步ztree 加复选框 及相应后台处理

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

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="utf-8" />
  5         <title></title>
  6     </head>
  7     <script type="text/javascript" src="js/jquery-1.8.0.js" ></script>
  8     <body>
  9         <ul id="myTree"></ul> ///定义ztree要显示的容器标签
 10
 11     </body>
 12     <script>
 13         var myTreeNodes = [];  //定义接收返回集合的容器,为了在后面init真正初始化树时,作为最后一个参数用
 14         var IDMark_A = "_a"; //定义个变量,其实就是为了后面匹配tree自动生成的a标签(在这里做下说明而已,不定义直接在下面拼也行吧)
 15         var mySetting = {
 16             view:{
 17                 addDivDom: myyAddDivDom //自定义控件,这里是加入了复选框
 18             },
 19             data:{
 20                 key:title:"name",  //设置title提示信息对应的属性名称 也就是节点相关的某个属性
 21                 children:"childNodes"
 22             },
 23             async:{
 24                 enable:true, //是否开启异步加载模式
 25                 type:‘post‘,
 26                 url: myGetUrl,//得到请求路径的方法
 27                 dataFilter: myFilter //对于请求回来的数据进行预处理的方法
 28             }
 29         }
 30
 31         //加入自定义的显示控件 (这里是文本框)
 32         function myAddDivDom(tree,treeNode){
 33             var aObj = $("#"+treeNode.tId+IDMark_A);///这个就是个选择器,选的是原节点所在的a标签(这是tree自己生成的a标签)
 34             if(treeNode.myCheck=="1"){///这个是可以自己加判断,让指定的对象前加上复选框
 35                 var editStr = "<input type=‘checkbox‘ value=‘"+treeNode.id+"‘onfocus=‘this.blur();‘></input>";
 36                 aObj.before(editStr); ///before是jq的方法,意思是在调用者标签的签名加入参数(参数也可以是标签,和html()方法的参数是一样的)
 37             }
 38         }
 39
 40         //得到请求路径
 41         function myGetUrl(treeId,treeNode){
 42             var firstId = "";//第一个节点对象的id
 43             var  url = "";
 44             if(treeNode==null){ //第一次,加载树时发的请求
 45                 url = path+"xxx/loadNextTreeNodes.do?id="+firstId+"&otherParam"+otherParam;
 46             }else{//树加载完成后,点击某个(有子节点的)节点后发出的请求
 47                 url = path + "xxx/loadNextTreeNodes.do?id="+treeNode.id+"&otherParam"+otherParam;
 48             }
 49             return url;
 50         }
 51
 52         //对返回的数据进行预处理
 53         function myFilter(treeId,parentNode,childNodes){
 54             for (var i=0,i<childNodes.length;i++) {
 55             /*
 56              下面等号左边的 childNodes[i] 的属性都是在 tree中要显示的每个节点的属性,
 57              而右边的childNodes[i]的属性则表示从后台得到的对象集合中每个对象的真实属性
 58             */
 59                 childNodes[i].code=xxxx;
 60                 childNodes[i].open=true;
 61                 childNodes[i].name = childNodes[i].xxxName;
 62                 childNodes[i].xxx = childNodes[i].xxxxx;
 63
 64                 if(childNodes[i].hasChild==1){
 65                     childNodes[i].isParent = true;///要显示成树,集合中的数据必须要有个boolean类型的 isParent属性
 66                     //可以在后台对象属性上直接加上,也可以在预处理这里的js中根据条件加上这个属性
 67                 }
 68             }
 69             return childNodes;
 70         }
 71
 72         ///上面这些都是为了生成树的准备信息,下面这句才是真正生成树的代码(当然这句可以放在任意位置,比如最上面也可以)
 73         $.fn.zTree.init($("#myTree"),mySetting,myTreeNodes);//参数1:容器对象  2:tree的setting设置  3:接收后台返回值的数组
 74         /*
 75          执行这句的时候,会自动 先执行 myGetUrl 方法,得到 url,然后自动发送这个url到后台请求数据(就和ajax一样,其实这句话里面就是发了一个ajax请求),
 76          然后请求回来的 数据会自动先传入myFilter方法的childNodes参数中,并执行myFilter方法,
 77          然后在加载tree的同时自动调用myAddDivDom方法,在对应的节点前拼好checkbox复选框,并显示在页面上。
 78          */
 79
 80     </script>
 81
 82     <script>
 83         //下面这些都是java代码
 84         @ResponseBody
 85         @RequestMapping("loadNextTreeNodes")
 86         public void loadNextTreeNodes(){
 87             List list=[];//假设后台有一个要展示为 tree的list集合
 88             for(item:list){
 89                 item.setHasChild("0");
 90                 if(xxx){
 91                     item.setHasChild("1");
 92                 }
 93             }
 94             writeJson(list);//把list转成json写到前台
 95         }
 96
 97         //下面这个就是封装了个写json到前台的方法,供参考
 98         public void writeJson(Object obj){
 99             PrintWriter out = null;
100             try{
101                 response.setContentType("");
102                 response.setHeader("");
103                 response.setHeader("");
104                 out = response.getWriter();
105                 out.print(new Gson().toJson(obj));
106             }catch(Exception e){
107
108             }finally{
109                 try{
110                     FileUtil.flushAndCloseWrite(out);//关闭流
111                 }catch(e){
112                 }
113             }
114         }
115
116     </script>
117 </html>
时间: 2024-11-05 00:11:40

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

ztree树复选框的使用说明1

---恢复内容开始--- 项目需要添加和修改的弹窗里面有树形结构一级为部门 二级为人员 : 添加弹窗里面点击input框出现下面树形结构, 修改弹窗里面,一进弹窗input默认有内容时,点击input框下面树形结构想对应的复选框也要勾上, 我在做的过程中遇到个问题,就是修改的时候是正确的因为我打开修改弹窗的时候把选中的树id 保存了 , 但是添加的时候会出现一个问题就是我点击input时树形显示,我选中复选框后input上也有相对应的人名, 但是我发现我少点了一个需要再点击input出现树形去选

WPF使用DEV之TreeListControl---添加复选框

1.绑定的Class中添加一个Bool类型的属性 2.   该属性无需初始赋值,你运行即可看到如图: Bool类型数据自动变成了复选框 3.当然了,你肯定想知道用户选择了哪些复选框,从而你就想获取选中复选框对应的这一行后面的数据做操作 --这一点我当时很头疼,想有什么事件触发什么方法解决,感谢@常州木头 开导 --当你完成上述1时出现2,用户在在一些复选框打了对勾后,ObservableCollection<ConnectionModel>中对应Bool数据IsSelect就自动变为了true

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

前言 获取gridview每一列前面的复选框,然后获取选中的这一行的id.aspx页面,我不喜欢用这个,有的公司用自己封装的,基本上都是用封装的,这是我知道的.也有用Repeater的.可能是因为gridview微软该给提供的都提供了吧.很强大,不该要的也有了.废话说了不少,说说我自己做的时候问题吧. 过程 自己简单实现了一些,只是为了说明注意的那个问题. 前台代码 后置代码: 总结 我就考虑到绑定数据和获取checkbox是否被选中,数据显示出来了,这没问题了,然后就获取复选框的代码也对.但是

pyqt tabwidget加复选框

#!/usr/bin/python #-*-coding: utf-8 -*- from PyQt4.QtGui import (QApplication, QHeaderView, QItemSelectionModel, QStandardItemModel,QTableView,QCheckBox,QComboBox, QItemDelegate,QStyleOptionViewItem,QSpinBox, QTreeView) from PyQt4.QtCore import QMode

【ztree】完美实现复选框功能

在权限系统中,大多数的页面都用到了树形结构,其中最常用的便是树资源的加载和单击事件,除此之外ztree还可以实现很多功能.今天以实现复选框的添加功能为例,咱们再来深入的学习下ztree的应用. 一.实例描述 在用户管理模块中,需要给用户添加角色,而用户与角色的之间是一个多对多的关系.这里我们可以先加载两个角色树资源,通过两个树之间数据的交换,从而得到用户所拥有的角色资源,实现效果如下: 1.用户信息入口 2.加载角色信息 Datagrid表格中的"分配"按钮是针对单个用户的角色分配,而

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

组合框可以看作是列表框和文本框的组合,因其占据的空间少,使用操作方便,常被界面设计人员用于界面开发设计中,在有限个输入的条件下,组合框常用来代替文本框,这样从用户使用角度来看,更趋人性化,所见即所得.然好的控件永远敢不上应用的步伐,有时常规控件并不能满足应用的需要,经常需要在现有的控件上做扩展.有些应用需要在组合框的列表框的每一项前加复选框,以便可以控制列表框每一项的状态(选中还是未选中),显然现有的组合框(列表框+文本框的组合)不能满足应用要求.那么怎么得到一个超强组合框(列表框+文本框+复选

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

鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-11-10/174.html ---------------------------------------------------------------------------------------- 本博客介绍了如何对表格的列进行渲染及在行号前加入复选框. 以下是效果图: 代码: /** * Grid * 此js演示了如何对列的样式进行渲染以及如何为

jQuery选取所有复选框被选中的值并用Ajax异步提交数据

昨天和朋友做一个后台管理系统项目的时候涉及到复选框批量操作,如果用submit表单提交挺方便的,但是要实现用jQuery结合Ajax异步提交数据就有点麻烦了,因为我之前做过的项目中基本上没用Ajax来批量提交复选框数据,今天用到了就分享一下. 由于我做的项目一些地方比较复杂,这里我只举一个小例子,能理解就好. 首先,我做了一个简单的多个复选框的界面,如图: 这是一个比较简单的多个复选框提交界面.代码如下: 1 <body> 2 <div> 3 <input type=&quo

织梦/dedecms 当文章转载时不需要设置图片水印的设置,取消’图片是否加水印‘的复选框,并且修改如下文件即可生效

当想添加水印是选中“图片是否加水印”复选框即可. 找到include/helpers/image.helper.php这个文件,在里面找到中的if( isset($GLOBALS['needwatermark']) )在下面添加如下代码:else{   $photo_markup=$photo_markdown='0';}