EasyUI之Tree树形结构(二)

前端html代码

<td>
    <select id="parentResource" class="easyui-combobox com_input" name="parentId" 
    data-options="textField:'text',valueField:'pid',required:true" style="width:173px;">
    </select>
</td>
复制代码

前端js代码

//增
add: function () {
    $('#SysResourceEdit').dialog({
            href: SysResource.URL.inputUI(),
            onLoad: function () {
                $('#parentResource').combotree({
                    onSelect: function (record) {
                    },
                    onChange: function (a,b) {
                    },
                    url: SysResource.URL.tree(),
                    method: 'get',
                    value:'0',
                    panelHeight: 'auto'
                });
            }
        })
        .dialog("open");
}
复制代码

后台Java核心代码

@RequestMapping("/tree")
public List<Tree> tree(){
	List<SysMenuEntity> menuList = sysMenuService.queryList();
	List<Tree> trees = ResourceUtil.prepareMenuToTree(menuList);
	Tree tree = new Tree();
	tree.setText("一级目录");
	tree.setId(0L);
	tree.setPid(-1L);
	tree.setIsLeaf(0);
	tree.setChildren(new ArrayList<>());
	trees.add(0,tree);
	return trees;
}
	
public static List<Tree> prepareMenuToTree(List<SysMenuEntity> resourceList) {
        if(resourceList == null || resourceList.size() == 0){
            return new ArrayList<>();
        }
        //目录集合
        List<Tree> catalogMenuList = new ArrayList<>();
        //菜单集合
        List<Tree> menuList = new ArrayList<>();
        //按钮集合
        List<Tree> buttonList = new ArrayList<>();
        resourceList.forEach(sysMenuEntity->{
            Tree menuTree = menuToTree(sysMenuEntity);
            //类型
            Integer type = menuTree.getIsLeaf();
            //目录
            if(type == Constant.MenuType.CATALOG.getValue() ){
                catalogMenuList.add(menuTree);
            }
            //菜单
            if(type == Constant.MenuType.MENU.getValue()){
                menuList.add(menuTree);
            }
            //按钮
            if(type == Constant.MenuType.BUTTON.getValue() ){
                buttonList.add(menuTree);
            }
        });
        catalogMenuList.forEach(catalogMenu->{
            long catalogId = catalogMenu.getId();
            //目录的孩子
            List<Tree> catalogChildren  = catalogMenu.getChildren();
            for(Iterator<Tree> second = menuList.iterator(); second.hasNext();){
               Tree menu = second.next();
                long menuId = menu.getId();
                //菜单的孩子
                List<Tree> menuChildren  = menu.getChildren();
                if(catalogId == menu.getPid()){
                    catalogChildren.add(menu);
                    for(Iterator<Tree> buttonTree = buttonList.iterator(); buttonTree.hasNext();){
                        Tree button = buttonTree.next();
                        long pid = button.getPid();
                        if(menuId == pid){
                            menuChildren.add(button);
                            buttonTree.remove();
                        }
                    }
                    second.remove();
                }
                if(menuChildren!=null && menuChildren.size() != 0){
                    menu.setState("closed");
                }
            }
            if(catalogChildren!=null && catalogChildren.size() != 0){
                catalogMenu.setState("closed");
            }
        });
        menuList.clear();
        buttonList.clear();
        return catalogMenuList;
}
    
private static Tree menuToTree(SysMenuEntity resource) {
        Tree tree = new Tree();
        tree.setId(resource.getMenuId());
        tree.setText(resource.getName());
        tree.setIconCls(resource.getIcon());
        tree.setIsLeaf(resource.getType());
        tree.setPid(resource.getParentId());
        /*tree.setAttributes(resource);*/
        return tree;
}

public class Tree implements Serializable {
    /*节点的 id*/
    private Long id;
    /*要显示的节点文本*/
    private String text;
    private int seq;
    /*节点状态,'open''closed',默认是 'open'*/
    private String state = "open";// open,closed
    /*指示节点是否被选中*/
    private boolean checked = false;

    /*定义了一些子节点的节点数组*/
    private List<Tree> children = new ArrayList<>();
    /*用来显示图标的 css class*/
    private String iconCls;

    private Long pid;

    /*把指定的节点定义成叶节点*/
    private Integer isLeaf;
}
复制代码

最终效果:

转载于:https://juejin.im/post/5cea4ddf6fb9a07ecc446196

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET MVC EasyUI-Tree 是一种用于在ASP.NET MVC应用程序中实现树状结构的开源插件。它基于EasyUI框架,为开发人员提供了一种简单而强大的方式来展示和操作树形数据。 使用ASP.NET MVC EasyUI-Tree可以实现以下功能: 1. 数据展示:可以将树状数据以层级结构展示出来,帮助用户更直观地理解数据之间的关系。 2. 数据操作:可以对树状数据进行增加、编辑和删除等操作,使用户可以方便地对树节点进行维护和管理。 3. 数据筛选:可以通过设置过滤条件实现对树状数据的快速筛选,只显示符合条件的节点。 4. 数据排序:可以对树状数据进行排序,按照特定字段的升序或降序排列。 5. 数据搜索:可以通过关键字搜索来快速定位包含特定内容的节点。 6. 数据导入/导出:可以将树状数据导入到Excel等格式文件中,或者将外部数据导入到树状结构中。 7. 数据异步加载:对于大量数据,可以采用异步加载的方式实现分页加载,提升性能和用户体验。 使用ASP.NET MVC EasyUI-Tree需要进行一些配置和编写代码,但整体来说相对容易上手。它提供了丰富的API和事件以供开发人员自定义和扩展,能够满足不同需求的应用场景。 总而言之,ASP.NET MVC EasyUI-Tree是一个强大而易用的工具,能够帮助开发人员在ASP.NET MVC应用程序中轻松地实现树状结构的展示和操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值