位置: IT常识 - 正文

LayUI下拉树TreeSelect的使用解读(layui树形下拉框)

编辑:rootadmin
这篇文章主要介绍了LayUI下拉树TreeSelect的使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录

推荐整理分享LayUI下拉树TreeSelect的使用解读(layui树形下拉框),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:layui下拉树表格,layui下拉框数据库,layui 树形下拉列表,下拉框树形结构,layui下拉树表格,layui下拉树表格,下拉框树形结构,layui 树形下拉列表,内容如对您有帮助,希望把文章链接给更多的朋友!

显示效果图JS渲染样式代码后台响应加载下拉树数据方法(有详细注释)Dept实体类代码JSON数据格式JSON数据

树形结构在实际开发中是很长用的一种结构。最近写了一个LayUI的小案例,其中用到了TreeSelect,这里整理一下。

TreeSelect官网地址:https://fly.layui.com/extend/treeSelect/

显示效果图LayUI下拉树TreeSelect的使用解读(layui树形下拉框)

因为TreeSelect不是LayUI官方开发的,而是第三方基于LayUI开发的,所以需要先用Layui引入一下文件。

之后页面只需要引入LayUI的CSS和JS就可以了。

页面给一个标签,用于显示TreeSelect下拉树选中的内容值,获取选中值时,直接获取标签值,就是选中的内容值。

<input type="text" name="parentId" id="tree2" lay-filter="tree2" class="layui-input" />JS渲染样式代码<script type="text/javascript">layui.use(["treeSelect", "form", "tree"], function () {var form = layui.form;var tree = layui.tree;var treeSelect = layui.treeSelect;treeSelect.render({// 选择器elem: '#tree',// 异步获取下拉树需要显示的数据data: 'dept/treeSelect',// 异步加载方式:get/post,默认gettype: 'post',// 占位符placeholder: '上级菜单',// 是否开启搜索功能:true/false,默认falsesearch: true,// 一些可定制的样式style: {folder: {enable: true},line: {enable: true}},// 点击节点回调click: function(d){//console.log(d);},// 加载完成后的回调函数success: function (d) {//console.log(d);// 选中节点,根据id筛选,一般修改时会有默认选中状态,可以在这里设置//treeSelect.checkNode('tree', 2);//console.log($('#tree').val());// 获取zTree对象,可以调用zTree方法//var treeObj = treeSelect.zTree('tree');// console.log(treeObj);// 刷新树结构//treeSelect.refresh('tree');}});});</script>后台响应加载下拉树数据方法(有详细注释)@RequestMapping(value="/treeSelect")@ResponseBody//这里写的,新增和修改数据请求都是同一个方法,如果是修改会传递一个修改对象的idpublic Object treeSelect(Integer id) {Sort sort = Sort.by("idx"); //排序Specification<Dept> spec = buildSpec1(); //查询条件,查询父节点为null的元素List<Dept> list = deptService.findAll(spec,sort); //查询,Dept为实体类return buildTree(list, id); //转换为treeSelect指定的JSON数据格式方法}private Object buildTree(List<Dept> list, Integer id) {List<HashMap<String, Object>> result=new ArrayList<>();for (Dept dept : list) {if(dept.getId() != id) { //判断如果是修改的话,修改的节点及下级节点不显示,也就不加载HashMap<String, Object> node=new HashMap<>();node.put("id", dept.getId()); //节点idnode.put("name",dept.getName()); //节点数据名称node.put("open", false); //是否展开node.put("checked", false); //是否选中,前台也可以设置是否选中if(dept.getChildren().size() != 0) { //如果下级节点不为空,node.put("children",buildTree(dept.getChildren(), id)); //递归加载下级节点}result.add(node);}}return result;}public Specification<Dept> buildSpec1() {Specification<Dept> specification = new Specification<Dept>() {private static final long serialVersionUID = 1L;@Overridepublic Predicate toPredicate(Root<Dept> root, CriteriaQuery<?> query, CriteriaBuilder cb) {HashSet<Predicate> rules=new HashSet<>();Predicate parent = cb.isNull(root.get("parent")); //查询父节点为null的元素rules.add(parent);return cb.and(rules.toArray(new Predicate[rules.size()]));}};return specification;}Dept实体类代码import com.fasterxml.jackson.annotation.JsonIgnore;import org.springframework.data.annotation.CreatedBy;import javax.persistence.*;import java.util.ArrayList;import java.util.List;@Entitypublic class Dept {private Integer id;private String name; //部门名称private String deptName; //部门负责人private String phone; //电话号private String number; //编号private double idx; //排序@JsonIgnoreprivate Dept parent;@JsonIgnoreprivate List<Dept> children = new ArrayList<>();@Id@GeneratedValuepublic Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDeptName() {return deptName;}public void setDeptName(String deptName) {this.deptName = deptName;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public double getIdx() {return idx;}public void setIdx(double idx) {this.idx = idx;}@ManyToOne@CreatedBypublic Dept getParent() {return parent;}public void setParent(Dept parent) {this.parent = parent;}@OneToMany(cascade=CascadeType.ALL,mappedBy="parent")@OrderBy(value="idx")public List<Dept> getChildren() {return children;}public void setChildren(List<Dept> children) {this.children = children;}public Dept(Integer id, String name, String deptName, String phone, String number, double idx, Dept parent, List<Dept> children) {this.id = id;this.name = name;this.deptName = deptName;this.phone = phone;this.number = number;this.idx = idx;this.parent = parent;this.children = children;}public Dept(Integer id) {this.id = id;}public Dept() {}}

这里后台持久层是使用的Spring-Data-Jpa,如果你是用的其他持久层框架,只要返回的JSON数据格式一样就可以了。

JSON数据格式

JSON数据[{"children": [//下级节点{"children": [{"name": "测试","checked": false,"id": 30,"open": false}, {"name": "开发","checked": false,"id": 31,"open": false}, {"children": [{"name": "测试节点","checked": false,"id": 36,"open": false}],"name": "测试","checked": false,"id": 32,"open": false}],"name": "技术部","checked": false,"id": 2,"open": false}, {"name": "财务部","checked": false,"id": 19,"open": false}],"name": "某某公司",//节点内容"checked": false,//是否选中"id": 1,//id"open": false//是否展开}, {"name": "测试","checked": false,"id": 33,"open": false}]

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

本文链接地址:https://www.jiuchutong.com/zhishi/304576.html 转载请保留说明!

上一篇:python中Array和DataFrame如何相互转换(python,array)

下一篇:java泛型方法是什么(java泛型方法的作用)

  • 创业+故事+网:13岁开始创业,如何赚到千万(创业故事小故事)

    创业+故事+网:13岁开始创业,如何赚到千万(创业故事小故事)

  • hp136w打印机如何连接wifi(hp136w打印机如何清零)

    hp136w打印机如何连接wifi(hp136w打印机如何清零)

  • 微信设置朋友权限仅聊天(微信设置朋友权限怎么设置)

    微信设置朋友权限仅聊天(微信设置朋友权限怎么设置)

  • vivo x20什么时候上的市(vivo x20什么时候发布的)

    vivo x20什么时候上的市(vivo x20什么时候发布的)

  • 抖音小店审核要多久(抖音小店的审核时间是多久?)

    抖音小店审核要多久(抖音小店的审核时间是多久?)

  • iwatch美版与国行区别(watch美版和国行)

    iwatch美版与国行区别(watch美版和国行)

  • vivox30支不支持5g(vivox30支不支持OTG)

    vivox30支不支持5g(vivox30支不支持OTG)

  • iPhone?6s和iPhone?X拍照对比(apple iphone 6s)

    iPhone?6s和iPhone?X拍照对比(apple iphone 6s)

  • 支付宝电话号码怎么注销(支付宝电话号码怎么查看)

    支付宝电话号码怎么注销(支付宝电话号码怎么查看)

  • excel的特点(excel的特点和功能)

    excel的特点(excel的特点和功能)

  • 小米手机横屏竖屏怎么调整(小米手机横屏竖屏设置)

    小米手机横屏竖屏怎么调整(小米手机横屏竖屏设置)

  • 手机删掉的软件怎么恢复(手机怎么恢复删掉的软件)

    手机删掉的软件怎么恢复(手机怎么恢复删掉的软件)

  • ps怎么把图片变成白底(ps怎么把图片变成圆形)

    ps怎么把图片变成白底(ps怎么把图片变成圆形)

  • ps如何去红眼(ps中去除红眼)

    ps如何去红眼(ps中去除红眼)

  • 微信支付如何看明细(微信支付如何看自动缴费)

    微信支付如何看明细(微信支付如何看自动缴费)

  • ie浏览器怎么卸载重装(ie浏览器怎么卸载掉)

    ie浏览器怎么卸载重装(ie浏览器怎么卸载掉)

  • vivo耳机线控怎么设置(vivo线控耳机怎么调音量)

    vivo耳机线控怎么设置(vivo线控耳机怎么调音量)

  • 手机流量ip地址固定吗(手机流量ip地址查询位置)

    手机流量ip地址固定吗(手机流量ip地址查询位置)

  • 删除的视频怎么恢复(删除的视频怎么找回来)

    删除的视频怎么恢复(删除的视频怎么找回来)

  • ps怎么把图片弄出来(ps怎么把图片弄模糊)

    ps怎么把图片弄出来(ps怎么把图片弄模糊)

  • word如何删除脚注(word如何删除脚注上方的横线)

    word如何删除脚注(word如何删除脚注上方的横线)

  • oppo手机录屏在哪里设置(OPPO手机录屏在哪里观看)

    oppo手机录屏在哪里设置(OPPO手机录屏在哪里观看)

  • wps文件怎么发送到微信(华为平板的wps文件怎么发送)

    wps文件怎么发送到微信(华为平板的wps文件怎么发送)

  • Win11如何更改默认打开方式 Win11更改默认打开方式方法(win11怎么把默认c盘改到d盘)

    Win11如何更改默认打开方式 Win11更改默认打开方式方法(win11怎么把默认c盘改到d盘)

  • 所得税为什么比利润高
  • 收到上年度所得税发票
  • 月末一般无余额的有
  • 美团收取的佣金怎么开票
  • 审计调整分录做在哪一年
  • 从商业企业购进商品
  • 公司向法人借款有税务风险吗
  • 未确认收入可以开发票吗
  • 质量问题产生的影响
  • 给员工缴纳保险
  • 企业核税需要什么资料
  • 外墙装饰公司的资质规定
  • 总资产报酬率可以用净利润计算吗
  • 申报营业额怎么填
  • 收付实现制下预收款算收入吗
  • 预付款税率是多少
  • 人防设施建设费
  • 汇算清缴的所得税会计分录
  • 股东未发工资可否提出仲裁
  • 筹建期间开办费账务处理
  • 工程项目预缴税金
  • 备用金借款单怎么写
  • 斐讯路由器地址在哪里看
  • 苹果电脑如何查看内存大小
  • 建筑企业如何预缴企业所得税
  • window11安装失败
  • 共享文档无法访问如何解决
  • linux 速度
  • PHP:curl_getinfo()的用法_cURL函数
  • 房地产销售未完工产品收入是含税的吗
  • 赠送现金券是否违法
  • 企业盘盈资产开什么发票
  • 少数股东权益贷方表示什么意思
  • vue解决异步取值问题
  • 前端如何适配移动端
  • 基于php判断客户是否存在
  • 固定资产折旧四种方法公式
  • ps黑白怎么调
  • 不确认收款退款对方还能收到钱么?
  • js中promise的三种状态
  • mysql中join的用法
  • 房东减免后二房东不减房租
  • 在建工程转固定资产摘要怎么写
  • 中间人拿回扣是什么行为
  • 什么情况下要去y加ies
  • 承包经营所得适用比例税率
  • 金税四期有什么变化
  • 农产品税率2020年计算
  • 机会成本的特点有()
  • 会计做账可以写负数吗
  • 企业收到拆迁补偿款
  • 安全生产费的使用包括
  • 库存商品主要包括
  • 小额零星物资
  • 通行费发票电子化 机场路
  • 提前还贷款计算机
  • 会计中原始凭证是什么意思
  • 开票6个点怎么计算
  • mysql查询语句大全及用法
  • sqlserver导出mysql
  • mysql5.7.29安装
  • sqlserver 通用分页存储过程
  • win10分辨率2560*1080
  • 怎么在mac上看电视剧
  • linux网络设置在哪里
  • jQuery实现ctrl+enter(回车)提交表单
  • node copyfile
  • javascript如何学
  • firefox和谷歌
  • bat中if语句的用法
  • css expression 隔行换色
  • 手机游戏服务器无响应是怎么回事
  • batch批处理
  • jqueryw3c
  • 一不小心做错事男朋友就开始说我
  • python 包 __init__
  • 火车票抵扣申报表怎么填
  • 深圳如何打印个人征信
  • 税务税收预测
  • 郝姓家谱辈分查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设