• easyui中带checkbox框的tree


     1 var data = [{
     2             "id": 1,
     3             "checked":true,
     4             "text": "系统菜单",
     5             "children": [{
     6                 "id": 11,
     7                 "text": "用户管理",
     8                 "checked":true,
     9                 "children": [{
    10                     "id": 19,
    11                     "text": "增加用户"
    12                 }, {
    13                     "id": 3,
    14                     "text": "修改用户"
    15                 }, {
    16                     "id": 5,
    17                     "text": "删除用户",
    18                     "checked":true
    19                 }]
    20             }, {
    21                 "id": 12,
    22                 "text": "角色管理",
    23                 "children": [{
    24                     "id": 13,
    25                     "text": "增加角色",
    26                     "checked":true
    27                 }, {
    28                     "id": 3,
    29                     "text": "修改角色"
    30                 }, {
    31                     "id": 5,
    32                     "text": "删除角色"
    33                 }]
    34             }]
    35         }, {
    36             "id": 2,
    37             "text": "其他",
    38             "state": "closed"
    39         }];
    40         
    41         $(function () {
    42             $("#tt").tree({
    43                 data: data,
    44                 checkbox: true,
    45                 cascadeCheck: false,
    46                 onCheck: function (node, checked) {
    47                     if (checked) {
    48                         var parentNode = $("#tt").tree('getParent', node.target);
    49                         if (parentNode != null) {
    50                             $("#tt").tree('check', parentNode.target);
    51                         }
    52                     } else {
    53                         var childNode = $("#tt").tree('getChildren', node.target);
    54                         if (childNode.length > 0) {
    55                             for (var i = 0; i < childNode.length; i++) {
    56                                 $("#tt").tree('uncheck', childNode[i].target);
    57                             }
    58                         }
    59                     }
    60                 }
    61             });
    62         });
    63 
    64         function getChecked()
    65         {
    66             var arr = [];
    67             var checkeds = $('#tt').tree('getChecked', 'checked');
    68             for (var i = 0; i < checkeds.length; i++) {
    69                 arr.push(checkeds[i].id);
    70             }
    71             alert(arr.join(','));
    72         }
             <ul id="tt"></ul>
        <input type="button" value="获取选中" onclick="getChecked()" />

    但是有时候我们从后台返回list,

    然后将list转换成一个Tree.   easyui根据这个数据生成一个树.

    那么如何将list转换成一棵树的基本代码就要查看上面一片博客了(http://www.cnblogs.com/guoyansi19900907/p/4701746.html)

    现在给出从数据库获取数据,根据指定数据来控制树的选中和未选中状态.

    下面这段代码是将list的数据转换成tree,并且加入checked=true或false来控制选中,未选中.

     1 /**
     2  * checkbox 树
     3  * @param rows
     4  * @param param
     5  * @returns {Array}
     6  */
     7 function convertCheckbox(rows,param){
     8     /*for(var gys=0;gys<rows.length;gys++){
     9         console.log(rows[gys]["if_fuquan"]);
    10     }*/
    11     function getTreeCheck(n){
    12         if(n==1){
    13             return true;
    14         }else{
    15             return false;
    16         }
    17     }
    18     
    19     
    20     function exists(rows, parentId){
    21         for(var i=0; i<rows.length; i++){
    22             if (rows[i][param.id] == parentId) return true;
    23         }
    24         return false;
    25     }
    26     
    27     var nodes = [];
    28     // 获取顶级的node
    29     for(var i=0; i<rows.length; i++){
    30         var row = rows[i];
    31         if (!exists(rows, row[param.parentId])){
    32             
    33             //gys    给顶层添加链接
    34             var topNode={id:row[param.id],text:row[param.name],checked:getTreeCheck(row[param.checked])};                
    35             nodes.push(topNode);
    36             
    37             // nodes.push({
    38                 //id:row.id,
    39                 //text:row.name
    40             //}); 
    41         }
    42     }
    43     
    44     var toDo = [];
    45     for(var i=0; i<nodes.length; i++){
    46         toDo.push(nodes[i]);
    47     }
    48     while(toDo.length){//循环toDo当toDo长度为零时停止
    49         var node = toDo.shift();//删除第一个元素,然后返回第一个元素,改变数组长度    
    50         // 获取子节点
    51         for(var i=0; i<rows.length; i++){
    52             var row = rows[i];
    53             if (row[param.parentId] == node.id){
    54                 var child = {id:row[param.id],text:row[param.name]};
    55                 // gys 添加链接
    56                 
    57                 //if(row[param.checked]){
    58                 //alert(row[param.checked]);
    59                     child.checked=getTreeCheck(row[param.checked]);
    60                 //}
    61                 if (node.children){
    62                     node.children.push(child);
    63                 } else {
    64                     node.children = [child];
    65                 }
    66                 toDo.push(child);
    67             }
    68         }
    69     }
    70     return nodes;
    71 }
     1 var objTree= $("#fuquanTree");
     2              objTree.tree({
     3                     url:"data.json",
     4                     method: 'get',
     5                     checkbox:true,
     6                     cascadeCheck: false,
     7                     loadFilter:function(data){//这里的privilege_id,privilege_name,if_fuquan,parent_privilege_id对应的都是数据库的字段.
     8                         return convertCheckbox(data,{id:"privilege_id",name:"privilege_name",checked:"if_fuquan",parentId:"parent_privilege_id"});
     9                     },
    10                     onCheck: function (node, checked) {
    11                         if (checked) {
    12                             var parentNode =objTree.tree('getParent', node.target);
    13                             if (parentNode != null) {//选中子集时,父级没选中就选中父级
    14                                 objTree.tree('check', parentNode.target);
    15                             }
    16                         } else {//取消选中,如果有子集就取消选中子集
    17                             var childNode = objTree.tree('getChildren', node.target);
    18                             if (childNode.length > 0) {
    19                                 for (var i = 0; i < childNode.length; i++) {
    20                                     objTree.tree('uncheck', childNode[i].target);
    21                                 }
    22                             }
    23                         }
    24                     }
    25                 });
  • 相关阅读:
    ElasticSearch 基础<转载>
    计算文本相似度方法总结(一)
    Java入门1---关键字、标识符、变量、运算符、流程控制、数组
    IntelliJ IDEA安装
    java代码转python代码
    python2和python3切换
    在markdown中插入github仓库中的图片
    MySQL:管理MySQL、事务(三)
    MySQL:查询、修改(二)
    MySQL:主键、外键、索引(一)
  • 原文地址:https://www.cnblogs.com/guoyansi19900907/p/4717249.html
Copyright © 2020-2023  润新知