Vue结合iView实现table的数据上下移操作并给选中行、某一列添加颜色

Vue结合iView实现table的数据上下移操作并给选中行、某一列添加颜色

说明

Vue结合iView的table组件,实现table的数据上下移动操作。并给table选中行添加颜色

给table选中行添加颜色
一、实现table行选中的效果,需要定义highlight-row,并给highlight-row下的td添加样式–背景颜色
二、通过row-class-name为选中的行添加上自己定义好的样式名。

列表项上下移动参考来源于Vue实现table列表项上下移动

相关属性方法解释

来源于官网
请添加图片描述
为某一列添加颜色,可在columns属性添加className。

代码如下

<template>
  <div class="demo-split">
    <div class="right-content-left">
      <Table
        :columns="columns"
        :data="tableData"
        highlight-row
        height="350px"
        :row-class-name="rowName"
        @on-row-click="selectChange"
      ></Table>
      <!-- 方式一:highlight-row -->
      <!-- 方式二::row-class-name="rowName"-->
    </div>
    <div class="right-content-right">
      <Button class="leftBtn" @click="moveUp">上移(U)</Button>
      <Button class="leftBtn" @click="moveDown">下移(W)</Button>
      <Button class="leftBtn" @click="deleteCol">删除(D)</Button>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      leftWidth: 1,
      topHeight: 2,
      split1: 0.5,
      rowvalue: null,
      index: null,
      treeRowValue : null,
      treeIndex : null,
      schemaName : null,
      columns: [
        {
          title: "物品",
          key: "title",
        },
        {
          title: "价格",
          key: "value",
          className: "yellow"
        },
      ],
      tableData: [
        {
          title: "薯片",
          value: 5,
        },
        {
          title: "零食大礼包",
          value: 45,
        },
        {
          title: "可口可乐",
          value: 6,
        },
        {
          title: "苹果手机",
          value: 5000,
        },
        {
          title: "香水",
          value: 300,
        },
      ],
    };
  },
  methods: {

    //上移
    moveUp() {
      if (this.treeIndex && this.treeIndex != 0) {
        let temp = this.tableData[this.treeIndex - 1];
        this.$set(this.tableData, this.treeIndex - 1, this.tableData[this.treeIndex]);
        this.$set(this.tableData, this.treeIndex, temp);
        this.treeIndex--;
      }
    },

    //下移
    moveDown() {
        console.log(this.treeIndex);
      if (this.treeIndex != null && this.treeIndex != this.tableData.length - 1) {
        let temp = this.tableData[this.treeIndex + 1];
        this.$set(this.tableData, this.treeIndex + 1, this.tableData[this.treeIndex]);
        this.$set(this.tableData, this.treeIndex, temp);
        this.treeIndex++;
      }
    },

    //删除
    deleteCol() {
      this.$delete(this.tableData, this.treeIndex);
      this.treeIndex = null;
    },

    //表格行选中
    selectChange(value, index) {
        console.log(1,this.treeRowValue,this.treeIndex,this.schemaName);
      this.treeRowValue = value;
      this.treeIndex = index;
      this.schemaName = value.title;
    },

    // 添加颜色:方式二
    //类名选中颜色改变
    rowName(row, index) {
      if (index == this.treeIndex) {
          console.log(index, this.treeIndex);
        return "hightColorRow";
      }
    },
  },
};
</script>
<style>
.demo-split {
  height: 400px;
  border: 1px solid #dcdee2;
}
.demo-split-pane {
  padding: 10px;
}
/* 添加颜色:方式一 */
.ivu-table-tbody .ivu-table-row-highlight td{
  background-color: #b8d9fd !important;
}

/* .ivu-table-tbody .ivu-table-row.hightColorRow td {
  background-color: #b8d9fd;
} */
.ivu-table-tbody .yellow{
  background: rgb(250, 250, 188) !important;
}
</style>



效果如下

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以通过以下步骤实现vue+iview外部按钮删除Table表格通过复选框选中的某一数据: 1. 在table组件中添加selection-change事件处理函数,用于监听选中数据的变化。 ```html <template> <Table :data="tableData" @selection-change="handleSelectionChange"> <TableColumn type="selection" :selectable="selectable"></TableColumn> <TableColumn label="姓名" prop="name"></TableColumn> <TableColumn label="年龄" prop="age"></TableColumn> <TableColumn label="性别" prop="gender"></TableColumn> </Table> <Button type="primary" @click="handleDelete">删除选中项</Button> </template> ``` 2. 在methods中定义handleSelectionChange方法,用于保存当前选中数据。 ```javascript methods: { handleSelectionChange(selectedItems) { this.selectedItems = selectedItems; }, handleDelete() { // 删除选中数据 this.selectedItems.forEach(item => { const index = this.tableData.indexOf(item); this.tableData.splice(index, 1); }); // 取消选中状态 this.$refs.table.clearSelection(); } } ``` 3. 在handleDelete方法中实现删除选中数据,并调用$refs.table.clearSelection()方法取消选中状态。 完整代码如下: ```html <template> <Table :data="tableData" @selection-change="handleSelectionChange" ref="table"> <TableColumn type="selection" :selectable="selectable"></TableColumn> <TableColumn label="姓名" prop="name"></TableColumn> <TableColumn label="年龄" prop="age"></TableColumn> <TableColumn label="性别" prop="gender"></TableColumn> </Table> <Button type="primary" @click="handleDelete">删除选中项</Button> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' } ], selectedItems: [] }; }, methods: { handleSelectionChange(selectedItems) { this.selectedItems = selectedItems; }, handleDelete() { // 删除选中数据 this.selectedItems.forEach(item => { const index = this.tableData.indexOf(item); this.tableData.splice(index, 1); }); // 取消选中状态 this.$refs.table.clearSelection(); } } }; </script> ``` 其中,需要注意的是在TableColumn中添加了type="selection"属性,用于实现复选框选择功能。同时,还需要定义selectable方法,用于控制某些是否可选。 ```javascript selectable(row, index) { // 第一不可选 return index !== 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值