vue页面的table标签进行单元格拖拽

先上代码

<td :dataIndex="index" draggable="true"  @dragend="drop($event)" @dragover="allowDrop($event)" :style="subInfo.flg ? 'border: solid 1px;width: 150px;text-align: center;height: 75px;background: #f43838;' : 'border: solid 1px;width: 150px;text-align: center;height: 75px;'"
                   v-if="subInfo.view && week.label === subInfo.week" v-for="(subInfo,index) in result">
                <span :dataIndex="index"  v-if="subInfo.curriculumList !== undefined " v-text="subInfo.curriculumList.subjectName + '/' + subInfo.curriculumList.teacherName "></span>
</td>

//拖拽移动中,获取移动到那个位置
      allowDrop(event) {

//获取整个拖拽的td单元格数据  dataindex是我自己加上的属性,代表数据在整个list的位置

//下面方法获取单元格移动到了那个位置
        this.endIndex = event.target.getAttribute("dataindex");

      },
//拖拽结束,进行数据处理使用

      drop(event) {

//下面方法获取拖拽数据的list位置
this.beginIndex = event.target.getAttribute("dataindex");


}

 

其中主要使用  

dataIndex="index" //因为里面还有span标签,所以给span也要加上,不然获取数据时候可能获取不到

draggable="true"   //开启拖拽

@dragend="drop($event)"  //拖拽结束

@dragover="allowDrop($event)" // 拖拽移动

@dragStart="drag($event)" //拖拽开始;我没用到

 

小弟vue没用多久,如有问题,还请大家指出,谢谢

Vue3 中使用 Ant Design 的 Table 组件实现行拖拽功能,你可以借助第三方库如 `vuedraggable` 或者 Ant Design 自带的 `TableDragger` 组件。以下是简单的步骤: 首先,你需要安装依赖: ```bash npm install vuedraggable @ant-design/icons ``` 然后,在组件中引入所需模块,并设置数据结构支持拖拽: ```html <template> <div> <draggable :list="tableData" :options="{ group: 'table-row', draggable: 'drag-handle', onEnd: handleDrop }"> <tr v-for="(item, index) in tableData" :key="index"> <td class="drag-handle"><i class="anticon anticon-columns"></i></td> <!-- ...表头... --> <!-- 可编辑列 --> <td v-for="(column, columnIndex) in columns" :key="columnIndex">{{ item[column] }}</td> </tr> </draggable> </div> </template> <script> import { Table, TableColumn, Draggable } from "ant-design-vue"; import Icons from "@ant-design/icons"; export default { components: { Table, TableColumn, Draggable, Icons, }, data() { return { tableData: [ // 表格初始数据... ], columns: [ // 列定义... ], }; }, methods: { handleDrop({ event, dragEl, containerEl, droppedItem }) { const currentIndex = this.tableData.indexOf(droppedItem); const sourceIndex = this.tableData.indexOf(dragEl); if (currentIndex !== sourceIndex) { this.tableData.splice(sourceIndex, 1); this.tableData.splice(currentIndex, 0, draggedItem); } }, }, }; </script> ``` 在这个例子中,`vuedraggable` 属性用于启用拖拽功能,`handleDrop` 方法会在拖放操作结束时更新表格数据。`drag-handle` 属性指定了可以作为拖动元素的部分,这里是一个图标。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值