从零基础认识 easyUI tree插件

easyUI tree插件

easyUI tree插件的可以将已经有树结构的数据展示出来。树结构的数据就是在同一个表中,A数据的id是B数据的外键,以此表示A节点的下一级节点为B。

这里写图片描述

如上图,parent_id每个数字代表其父节点的id(0代表没有父节点)

例如 id :1 - 10 用树表示则是:

        图书、音像、电子书刊
                |__ 电子书刊
                |     |__电子书
                |     |__网络原创
                |     |__数字杂志
                |     |__多媒体图书
                |__音像
                      |__音乐
                      |__影视                   
                      |__教育音像           
                      ...

而最后一个节点的is_parent就为0。

1.easyUI tree使用条件

  1. 拥有树结构的表数据
  2. 引入了easyUI的js
  3. 使用逆向工程生成了代码

2.分析easyUI tree使用所需的数据

  1. 作为一棵数据树,他接收的数据类型为json格式

  2. 异步树所需的数据结构:id , 节点上的文字:text , 节点的当前状态:status

    【异步树】:当点击节点的时候,才从数据库中加载子节点。(而不是事先预载好)

所需的数据使用一个pojo包装起来,进行返回。

3.easyUI tree前端的使用

  1. 触发按钮

    <a href="javascript:void(0)" class="easyui-linkbutton selectItemCat">选择类目</a>
  2. 触发事件

    因为easyUI tree的初始化多个地方会用到,所以一般写在一个通用的common.js里面,一旦要用到就直接引入该js文件。

    初始化方法:

       init : function(data){
        // 初始化图片上传组件
        this.initPicUpload(data);
        // 初始化选择类目组件
        this.initItemCat(data);
       },

    渲染插件:

       // 初始化选择类目组件
       initItemCat : function(data){
        $(".selectItemCat").each(function(i,e){
            var _ele = $(e);
            if(data && data.cid){
                _ele.after("<span style='margin-left:10px;'>"+data.cid+"</span>");
            }else{
                _ele.after("<span style='margin-left:10px;'></span>");
            }
            _ele.unbind('click').click(function(){
                $("<div>").css({padding:"5px"}).html("<ul>")
                .window({
                    width:'500',
                    height:"450",
                    modal:true,
                    closed:true,
                    iconCls:'icon-save',
                    title:'选择类目',
                    onOpen : function(){
                        var _win = this;
                        $("ul",_win).tree({
                            url:'/item/cat/list',
                            animate:true,
                            onClick : function(node){
                                if($(this).tree("isLeaf",node.target)){
                                    // 填写到cid中
                                    _ele.parent().find("[name=cid]").val(node.id);
                                    _ele.next().text(node.text).attr("cid",node.id);
                                    $(_win).window('close');
                                    if(data && data.fun){
                                        data.fun.call(this,node);
                                    }
                                }
                            }
                        });
                    },
                    onClose : function(){
                        $(this).window("destroy");
                    }
                }).window('open');
            });
        });
       },
    1. 编写请求树数据的url
    2. 每点击一次执行一次onClick请求,请求的时候会把当前节点的id传到url中。用返回的数据对节点进行判断,是否是叶子节点,并选择它的显示方式。

    tree插件只要你告诉 它请求树数据的url地址。在页面加载的时候它就会自己渲染出一个空树壳出来,你一点击一个节点,他就拿着当前这个节点跑去url里面拿数据。拿到数据之后他对数据做一系列的处理,然后显示出来。

4.easyUI tree的数据请求

1.构建返回的POJO对象

因为插件需要的是固定格式的json数据,所以用对象包装属性后放进List中进行返回。

构建json的位置为common工程(第四专题有提到,common工程相当于一个工具箱)。

/**
 * EasyUI树形控件节点
 * @author liyb
 *
 */
public class EUTreeNode {
    private long id;
    private String text;
    private String state;
    public long getId() {
        return id;
    }
...
}

根据所需数据创建的pojo

2.编写Service接口和接口实现

  1. 接口定义

    public interface ItemCatService {
    List<EUTreeNode> getCatList(long parentId);
    }
  2. 接口实现

    /**
    * 商品分类管理  
    * @author liyb
    *
    */
    @Service
    public class ItemCatServiceImpl implements ItemCatService {
    @Autowired
    private TbItemCatMapper itemCatMapper;
    @Override
    public List<EUTreeNode> getCatList(long parentId) {
        //创建查询条件
        TbItemCatExample example = new TbItemCatExample();
        Criteria criteria = example.createCriteria();
        criteria.andParentIdEqualTo(parentId);
        //根据条件查询   
        List<TbItemCat> list = itemCatMapper.selectByExample(example);
        List<EUTreeNode> resultList = new ArrayList<>();
        //把列表转化为treeNodeList   
        for(TbItemCat tbItemCat : list){
            EUTreeNode node = new EUTreeNode();
            node.setId(tbItemCat.getId());
            node.setText(tbItemCat.getName());
            node.setState(tbItemCat.getIsParent()?"closed":"open");
            resultList.add(node);
        }
        //返回结果
        return resultList;
    }
    }
    1. example用于添加条件,相当where后面的部分,其通过添加id限定为查询指定id的数据。

          //创建查询条件
          TbItemCatExample example = new TbItemCatExample();
          Criteria criteria = example.createCriteria();
          criteria.andParentIdEqualTo(parentId);

      (更多逆向工程的条件限定可进行百度搜索)

    2. 查询到指定的数据之后,存进对象里,再将对象存进List中

              EUTreeNode node = new EUTreeNode();
              node.setId(tbItemCat.getId());
              node.setText(tbItemCat.getName());
              node.setState(tbItemCat.getIsParent()?"closed":"open");
              resultList.add(node);

(Service详细介绍见第二专题)

3.Controler请求

/**
 * 商品分类管理Controller
 * @author liyb
 *
 */
@Controller
@RequestMapping("/item/cat")
public class ItemCatController {
    @Autowired
    private ItemCatService itemCatService;
    @RequestMapping("/list")
    @ResponseBody
    private List<EUTreeNode> getCatList(@RequestParam(value="id",defaultValue="0")long parentId){
        List<EUTreeNode> list = itemCatService.getCatList(parentId);
        return list;
    }
}

获取传来的id值,如果每传过来就默认为0。

4.运行

对common工程进行install之后就可以运行项目了。(详情可见专题四)

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
easyui是一个基于jQuery的UI框架,提供了丰富的界面组件和交互效果,方便开发人员快速构建Web页面。而treeeasyui中的一个树状组件,用于展示层级关系的数据。 在使用easyui tree进行java开发时,我们首先需要引入easyui的相关依赖包,并在页面中引入相应的脚本和样式文件。然后,我们可以通过在页面中定义一个div容器,将tree组件渲染在页面上。 在java后台代码中,我们需要提供数据给tree组件进行展示。一般来说,我们可以通过数据库查询、接口调用等方式获取数据,并将数据转换为json格式。然后,将json数据返回给前端页面,供tree组件使用。 接下来,我们需要在前端页面中初始化并配置tree组件。通过调用easyui提供的API,我们可以设置tree的数据源、展开图标、折叠图标、节点点击事件等。可以根据具体需求对tree进行自定义配置,以满足我们的业务需求。 在页面渲染完成后,easyui tree组件会自动将数据渲染为树状结构,并提供相应的交互功能,比如展开收起节点、选中节点等。我们可以通过对tree组件的事件进行监听,实现特定操作,比如点击节点后加载子节点、在节点上右键弹出菜单等。 总之,通过使用easyui tree组件,结合java后台开发,我们可以方便地实现树形结构的展示和交互操作,提升用户体验,简化开发流程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值