zoukankan      html  css  js  c++  java
  • 扩展easyui treegrid 级联选择

    /**
    * 扩展树表格级联勾选方法:
    * @param {Object} container
    * @param {Object} options
    * @return {TypeName}
    */
    $.extend($.fn.treegrid.methods, {
    /**
    * 级联选择
    * @param {Object} target
    * @param {Object} param
    * param包括两个参数:
    * id:勾选的节点ID
    * deepCascade:是否深度级联
    * @return {TypeName}
    */
    cascadeCheck: function (target, param) {
    var opts = $.data(target[0], "treegrid").options;
    if (opts.singleSelect)
    return;
    var idField = opts.idField;//这里的idField其实就是API里方法的id参数
    var status = false;//用来标记当前节点的状态,true:勾选,false:未勾选
    var selectNodes = $(target).treegrid('getSelections');//获取当前选中项
    for (var i = 0; i < selectNodes.length; i++) {
    if (selectNodes[i][idField] == param.id)
    status = true;
    }
    //级联选择父节点
    selectParent(target[0], param.id, idField, status);
    selectChildren(target[0], param.id, idField, param.deepCascade, status);
    /**
    * 级联选择父节点
    * @param {Object} target
    * @param {Object} id 节点ID
    * @param {Object} status 节点状态,true:勾选,false:未勾选
    * @return {TypeName}
    */
    function selectParent(target, id, idField, status) {
    var parent = $(target).treegrid('getParent', id);
    if (parent) {
    var parentId = parent[idField];
    if (status)
    $(target).treegrid('select', parentId);
    else
    $(target).treegrid('unselect', parentId);
    selectParent(target, parentId, idField, status);
    }
    }
    /**
    * 级联选择子节点
    * @param {Object} target
    * @param {Object} id 节点ID
    * @param {Object} deepCascade 是否深度级联
    * @param {Object} status 节点状态,true:勾选,false:未勾选
    * @return {TypeName}
    */
    function selectChildren(target, id, idField, deepCascade, status) {
    //深度级联时先展开节点
    //if (!status && deepCascade)
    // $(target).treegrid('expand', id);
    //根据ID获取下层孩子节点
    var children = $(target).treegrid('getChildren', id);
    for (var i = 0; i < children.length; i++) {
    var childId = children[i][idField];
    if (status)
    $(target).treegrid('select', childId);
    else
    $(target).treegrid('unselect', childId);
    selectChildren(target, childId, idField, deepCascade, status);//递归选择子节点
    }
    }
    }
    });

    调用方法:

    $('#test').treegrid({  

                    idField:'code',//需设置  

                    treeField:'code',  

                   singleSelect:false,//需设置  

                    columns:[[  

                      {field:'ck',checkbox:true},//需设置  

                      {title:'Code',field:'code',200},                    

                    ]],  

                    onClickRow:function(row){  

    //级联选择  

                       $(this).treegrid('cascadeCheck',{  

                           id:row.code, //节点ID  

                            deepCascade:true //深度级联  

                       });  

                    }  

                });  

  • 相关阅读:
    动态规划(决策单调优化):BZOJ 4518 [Sdoi2016]征途
    数据结构(树链剖分,线段树):SDOI 2016 游戏
    图论(费用流):BZOJ 4514 [Sdoi2016]数字配对
    搜索(四分树):BZOJ 4513 [SDOI2016 Round1] 储能表
    数据结构(KD树):HDU 4347 The Closest M Points
    数学(逆元):BZOJ 2186: [Sdoi2008]沙拉公主的困惑
    数学:UVAoj 11174 Stand in a Line
    线性代数(矩阵乘法):POJ 2778 DNA Sequence
    线性代数(矩阵乘法):NOI 2007 生成树计数
    线性代数(矩阵乘法):POJ 3233 Matrix Power Series
  • 原文地址:https://www.cnblogs.com/jimmyLei/p/9268702.html
Copyright © 2011-2022 走看看