• easyUI 实现异步tree


    html:

      <ul id="relInfoTree" class="easyui-tree"></ul>

    js:

    $(document).ready(function() {
      loadRelTree();
    });

    function loadRelTree(){
      $('#relInfoTree').tree({
        // checkbox: true,
        animate:true,
        lines:true,
        url: '/CrocodileSecret/system/cisweb/loadRelTree?id=0',//这是第一次加载树的url 加载根节点
        loadFilter:function(data){
          return data.treeJson;
        },
        onBeforeExpand:function(node){
          $("#relInfoTree").tree('options').url='/CrocodileSecret/system/cisweb/loadRelTree?id='+node.id;//这是点击父节点的时候发送请求去加载子节点
        }
      });
    }

    java:

    -EasyuiTreeNode.java

    private Integer id;//: 唯一标示;
    private String text;//: 显示的文本;
    private List<EasyuiTreeNode> children;//:子节点;
    private String state;//:closed或open,表示节点是展开还是折叠;
    private String iconCls="icon-blank";//空白图标,可选

    getter...setter...

    -Controller

    @RequestMapping(value = "/loadRelTree", method = RequestMethod.POST)
    @ResponseBody
    public JSONObject loadRelTree(Integer id,@RequestParam(value = "orgid", required = false) Integer orgid,HttpServletRequest request, HttpServletResponse response) {
    JSONObject json = new JSONObject();
      json = cisWebApp.loadRelTree(id);
    return json;
    }

    -service

    public JSONObject loadRelTree(Integer id, Integer orgId) {
      JSONObject object = new JSONObject();
      List<EasyuiTreeNode> list=new ArrayList<EasyuiTreeNode>();
      if(id==null || id==0) {
        EasyuiTreeNode node=new EasyuiTreeNode();
        CisOrg cisOrg=cisComp.getOrgById(orgId);
        node.setId(cisOrg.getOwnerUserId());
        node.setText(cisOrg.getOrgName());
        node.setState("open");
        node.setChildren(cisComp.getSublist(cisOrg.getOwnerUserId()));//start 初始显示一级
        if(node.getChildren().size()>0) {
        node.getChildren().stream().forEach(subNode->{
          subNode.setState(crmComponent.selIsClose(subNode.getId())>0 ? "closed":"open");
        });//end 如果只显示根节点,不用这段
        }
      list.add(node);
      }else {//异步加载
        list=cisComp.getSublist(id);
        if(list.size()>0) {
        list.stream().forEach(node->{
          node.setState(crmComponent.selIsClose(node.getId())>0 ? "closed":"open");
        });
      }
    }
    object.put("treeJson", list);
    object.put("status", "succeed");

    return object;
    }

    -xml

    <!-- 查询下级 -->

    <select id="getSublist" parameterType="java.lang.Integer" resultType="***.util.EasyuiTreeNode">
    SELECT
    u.id,
    u.nickname text
    FROM
    crm_user r
    INNER JOIN cis_user u ON u.id = r.user_id
    WHERE
    parent_user_id = #{userId}
    AND u.deleted=0
    AND r.deleted=0
    AND r.weight=1
    </select>

    <!-- 查询是否有下级 -->
    <select id="selIsClose" parameterType="java.lang.Integer" resultType="java.lang.Integer">
    SELECT
    COUNT(*)
    FROM
    crm_user
    WHERE
    parent_user_id = #{userId}
    AND deleted = 0
    AND weight=1

    </select>

  • 相关阅读:
    函数——返回值不止一个的情况(解一元二次方程)
    排序方法:去掉最高最低分求平均分 函数
    丢羊 递归
    网吧充值 函数+Swich+ArrayList版
    对战游戏自己简单版+大神版
    简单Struct+ArrayList选择买东西:购物车思路
    推箱子 复杂版(多个箱子)
    stuct+ArrayList的for用法
    Struct+ArrayList冒泡排序。例
    c# 穷举
  • 原文地址:https://www.cnblogs.com/zou-rong/p/10151799.html
Copyright © 2020-2023  润新知