欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

element表格行列拖拽的实现示例

程序员文章站 2022-04-02 15:24:58
element ui 表格没有自带的拖拽排序的功能,只能借助第三方插件sortablejs来实现,先来看一下动态图,效果是不是你们想要的。首先需要安装sortable.jsnpm install so...

element ui 表格没有自带的拖拽排序的功能,只能借助第三方插件sortablejs来实现,先来看一下动态图,效果是不是你们想要的。

element表格行列拖拽的实现示例

首先需要安装sortable.js

npm install sortablejs --save

然后引用

import sortable from ‘sortablejs'

需要注意的是element table务必指定row-key,row-key必须是唯一的,如id,不然会出现排序不对的情况。

###示例代码

<template>
  <div style="width:800px">

    <el-table :data="tabledata"
      border
      row-key="id"
      align="left">
     <el-table-column v-for="(item, index) in col"
        :key="`col_${index}`"
        :prop="dropcol[index].prop"
        :label="item.label"> 
      </el-table-column>
    </el-table>
    <pre style="text-align: left">
      {{dropcol}}
    </pre>
    <hr>
    <pre style="text-align: left">
      {{tabledata}}
    </pre>
  </div>
</template>
<script>
import sortable from 'sortablejs'
export default {
  data() {
    return {
      col: [
        {
          label: '日期',
          prop: 'date'
        },
        {
          label: '姓名',
          prop: 'name'
        },
        {
          label: '地址',
          prop: 'address'
        }
      ],
      dropcol: [
        {
          label: '日期',
          prop: 'date'
        },
        {
          label: '姓名',
          prop: 'name'
        },
        {
          label: '地址',
          prop: 'address'
        }
      ],
      tabledata: [
        {
          id: '1',
          date: '2016-05-02',
          name: '王小虎1',
          address: '上海市普陀区金沙江路 100 弄'
        },
        {
          id: '2',
          date: '2016-05-04',
          name: '王小虎2',
          address: '上海市普陀区金沙江路 200 弄'
        },
        {
          id: '3',
          date: '2016-05-01',
          name: '王小虎3',
          address: '上海市普陀区金沙江路 300 弄'
        },
        {
          id: '4',
          date: '2016-05-03',
          name: '王小虎4',
          address: '上海市普陀区金沙江路 400 弄'
        }
      ]
    }
  },
  mounted() {
    this.rowdrop()
    this.columndrop()
  },
  methods: {
    //行拖拽
    rowdrop() {
      const tbody = document.queryselector('.el-table__body-wrapper tbody')
      const _this = this
      sortable.create(tbody, {
        onend({ newindex, oldindex }) {
          const currrow = _this.tabledata.splice(oldindex, 1)[0]
          _this.tabledata.splice(newindex, 0, currrow)
        }
      })
    },
    //列拖拽
    columndrop() {
      const wrappertr = document.queryselector('.el-table__header-wrapper tr')
      this.sortable = sortable.create(wrappertr, {
        animation: 180,
        delay: 0,
        onend: evt => {
          const olditem = this.dropcol[evt.oldindex]
          this.dropcol.splice(evt.oldindex, 1)
          this.dropcol.splice(evt.newindex, 0, olditem)
        }
      })
    }
  }
}
</script>
<style scoped>
</style>

到此这篇关于element表格行列拖拽的实现示例的文章就介绍到这了,更多相关element表格行列拖拽内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!