EasyUI中treegrid查询数据后,前台接收到了数据但是不展示的问题

在treegrid展示全部数据之后,通过查询某些数据再进行treegrid展示时,页面却展示不出来,但是通过调试模式发现,前台已经接受到了要展示数据的Json字符串。

主要问题:

在进行treegrid展示数据时,我们在返回的Json字符串中一定需要有一个(_parentId)字段,并且要有一个_parentId的值为空作为最开始的父节点,当我们查询想要的数据之后,我们会发现这些数据中的_parentId值没有一个为空,所以treegrid找不到放在最根部的数据,所以就渲染不出来。

解决方案:

我们只需要在查询到的数据中,修改他们的_parentId,对每一个数据进行遍历,如果查出的结果中找不到这个数据的父节点,则将这个数据的_parentId设置为空,让其在树形结构中站到根部。

	/**
     * 根据查询条件查询出树状数据
     * @param request
     * @param sMenu
     * @return
     * @throws IntrospectionException
     * @throws InstantiationException
     * @throws IllegalAccessException
     * @throws InvocationTargetException
     */
    @RequestMapping(params = "selMenuTreeGrid", produces = "text/html;charset=UTF-8")
    @ResponseBody
    public String selTreeGrid(HttpServletRequest request, SMenu sMenu) throws IntrospectionException, InstantiationException, IllegalAccessException, InvocationTargetException {
        List<SMenuList> sMenuList = menuDemoService.getSMenu(sMenu);
        if(sMenuList == null || "".equals(sMenuList)){
            return "[]";
        }
        List<Map<String, Object>> mapList = new ArrayList<Map<String, Object>>();;
        // 遍历
        for (int i = 0; i < sMenuList.size(); i++){
            Map<String, Object> map = BeanToMapUtil.bean2map(sMenuList.get(i).getMenu());
            map.put("id", sMenuList.get(i).getMenu_no());
            // 首先将_parentId设置为空作为父节点
            map.put("_parentId", "");
            // 循环遍历一遍
            for (int j = 0; j < sMenuList.size(); j++){
                // 判断每一个数据是否有父节点
                if  (sMenuList.get(i).getP_menu_no().equals( sMenuList.get(j).getMenu_no())){
                    // 有父节点则改变_parentId为父节点
                    map.put("_parentId", sMenuList.get(i).getP_menu_no());
                    // 如果找到一个父节点,直接跳出一个循环
                    break;
                }
            }
            // 将所有的map添加到List集合中
            mapList.add(map);
        }
        // 将List转化为Json字符串传入到前台
        String js = outString(mapList);
        return js;
    }
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页