element-ui el-table 树形结构 父子级联动

这篇具有很好参考价值的文章主要介绍了element-ui el-table 树形结构 父子级联动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

el-table 表格

为 select 和 select-all 设置回调函数

<el-table :data="tableData" id="yc_load" ref="yc_load" height="500px" border default-expand-all
                row-key="showId" :tree-props="{children: 'children'}"
                @select="select"
                @select-all="selectAll">
        <el-table-column type="selection" width="50"></el-table-column>
        <el-table-column label="姓名" :fixed="true" prop="showName" align="left" header-align="left" width="230"></el-table-column>
</el-table>
简要数据格式
tableData: [
	{showId: xxx,
	showName: xxx,
	children: [
		{showId:xxx,
		showName:xxx,
		parentId:xxx},
		{showId:xxx,
		showName:xxx,
		parentId:xxx}
	]},
	{showId: xxx,
	showName: xxx}
],
ids: []
单选
select(selection,row){
      let vm = this
      // 操作行 row 在 已选范围 selection 内,认为是选中,否则是取消选中 
      if(selection.some((el)=>row.showId===el.showId)){
      	// 设置当前行选中状态
        row.isChecked = true
        // 记录选中id 
        this.addId(row)
        // 若存在子级,自己全选
        if(row.children) {
          row.children.map(c => {
            this.$refs.yc_load.toggleRowSelection(c,true)
            c.isChecked = true
            this.addId(c)
          })
        }
        // 若存在父级,设置父级选中
        if(row.parentId){
          let pNode = vm.tableData.find(x => x.showId === row.parentId)
          this.$refs.yc_load.toggleRowSelection(pNode,true)
          pNode.isChecked = true
          this.addId(pNode)
        }
      } else {
        row.isChecked = false
        this.deleteId(row)
        // 若存在子级,子级全部取消选中
        if(row.children){
          row.children.map((i)=>{
            this.$refs.yc_load.toggleRowSelection(i,false)
            i.isChecked = false
            this.deleteId(i)
          })
        }
        // 若存在父级,判断父级的子级(当前行的兄弟) ,若全部未选中,取消父级选中
        if(row.parentId) {
          let pNode = vm.tableData.find(x => x.showId === row.parentId)
          if(!pNode.children.some(el => el.isChecked == true)) {
            this.$refs.yc_load.toggleRowSelection(pNode,false)
            pNode.isChecked = false
            this.deleteId(pNode)
          }
        }
      }
      console.log(this.ids)
}
全选
selectAll(selection) {
	  // 判断当前是否有已选中的
      let rA = this.tableData.some(el => {
        let r = false
        if(el.children) {
          r = el.children.some(e => e.isChecked)
        }
        if(r) return r
        return el.isChecked
      })
      // 若有选中则全部取消,否则全部选中
      if(rA) {
        this.tableData.forEach(el => {
          el.isChecked = false
          this.$refs.yc_load.toggleRowSelection(el, false)
          this.deleteId(el)
          if(el.children) {
            el.children.forEach(e => {
              e.isChecked = false
              this.$refs.yc_load.toggleRowSelection(e, false)
              this.deleteId(e)
            })
          }
        })
      } else {
        this.tableData.forEach(el => {
          el.isChecked = true
          this.$refs.yc_load.toggleRowSelection(el, true)
          this.addId(el)
          if(el.children) {
            el.children.forEach(e => {
              e.isChecked = true
              this.$refs.yc_load.toggleRowSelection(e, true)
              this.addId(e)
            })
          }
        })
      }
      console.log(this.ids)
}
操作 ids
	// 增加选中
    addId(o) {
      let id = o.showId
      if(this.ids.indexOf(id) < 0) {
        this.ids.push(id)
      }
    },
    // 删除选中
    deleteId(o) {
      let id = o.showId
      this.ids = this.ids.filter(item => item !== id);
    },
不再设置 selection-change 回调函数,直接监听ids
  // 监听ids
  watch: {
    ids: function (newVal, oldVal) {
      this.handleChange(newVal)
    }
  },

感谢 element-ui el-table 实现全选且父级子级联动 提供的思路
另附 el-table 文档文章来源地址https://www.toymoban.com/news/detail-687231.html

到了这里,关于element-ui el-table 树形结构 父子级联动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • [element-ui] el-table点击高亮当前行

    1、highlight-current-row 2、:row-class-name=“tableRowClassName”,需要借助@row-click=\\\"handleRowClick\\\"获取当前点击行的下标 参考: elementUI中table点击高亮当前行的两种方式

    2024年03月21日
    浏览(11)
  • vue使用element-ui,el-table不显示

    例如:新增了一个表格,按官网代码贴过来的,结果一直不显示 代码如下一模一样,其他数据正常显示,就表格不显示 其实版本库不一致导致的,贼坑,又不提示 先卸载element-ui安装一个低版本的element-ui就可以解决``

    2024年02月11日
    浏览(15)
  • [element-ui] el-table行添加阴影悬浮效果

    问题: 在el-table每一行获得焦点与鼠标经过时,显示一个整行的阴影悬浮效果 没有什么效果 原因: box-shadow对display:table-row元素是不起作用的 解决方案: 弊端 给el-table行加阴影的问题算是解决了,但是却导致表格内容无法操作 1、通常,项目设计中,el-table会带一些按钮,比如

    2024年02月04日
    浏览(14)
  • element-ui el-table 如何实现合并单元格

    el-table的组件的可以合并单元格,先定义参数span-method 方法objectSpanMethod。在方法内控制当前单元格渲染成几个单元格或者删除掉当前单元格。 比如:代码中定义:span-method=\\\"objectSpanMethod\\\" objectSpanMethod实现是在方法区,具体内容是根据变量rowSpanList 去决定当前单元格是展示还是删

    2024年02月03日
    浏览(13)
  • 【Element-ui】el-table大数据量渲染卡顿问题

    【Element-ui】el-table大数据量渲染卡顿问题

    在项目开发中,遇到在表格中一次性加载完的需求,且加载数量不少,有几百几千条,并且每条都可能有自己的下拉框,输入框来做编辑功能,此时普通的el-table肯定会导致浏览器卡死,那么怎么办呢? 当然很多童鞋肯定会想到利用插件,其实我本人是不咋喜欢插件的,能自

    2024年02月05日
    浏览(7)
  • element-ui表格高度自适应(el-table 自适应高度)

    想让element-ui的表格 el-table 出现滚动条的时候,如果不做处理就只能是 height=“XXXpx”,给它一个固定的高度,我们的页面正常情况下,是不允许出现页面级滚动条的,也是不美观的,想让table自适应高度并且有滚动条,而且不会出现页面级滚动条,可以这么实现,下面是我写

    2024年01月17日
    浏览(7)
  • element-ui的table实现滚动加载,涵el-table组件封装一份

    element-ui的table实现滚动加载,涵el-table组件封装一份

    重点就是 a d d R o l l L i s t e n e r addRollListener a d d R o l l L i s t e n e r 函数,想快点弄上去看效果的直接弄这个函数吧 如果不在mounted中则一定要this.$nextTick(() = this.addRollListener()) 示例代码 如果你把上面的看过了;只需要在 a d d R o l l L i s t e n e r addRollListener a d d R o l l L i s t e

    2023年04月08日
    浏览(14)
  • element-ui中的el-table实现分页多选功能

    selection-change事件:当选择项发生变化时会触发该事件(当分页切换时,选中的数据都会自动清空) 链接: https://blog.csdn.net/qq_36157085/article/details/122922678

    2024年02月17日
    浏览(10)
  • Element-ui中表格el-table图片预览效果实现(非常实用)

    Element-ui中表格el-table图片预览效果实现(非常实用)

    🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅  文末获取源码联系 🏆先展示效果:   🏆使用的是下面这个插

    2024年02月11日
    浏览(17)
  • [element-ui] el-table表格合并 span-method

    element 中表格合并 span-method 函数详解

    2024年02月13日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包