handsontable右键新增、删除改为按钮新增删除

handsontable自带右键新增表格行和删除行功能(afterchange钩子中),但是实际使用中,右键功能并不容易被发现,用户的使用体验不好,所以需要把新增行和删除行的功能拿出来,在表格外使用按钮实现表格行的新增和删除。实现的效果如下图所示:

在这里插入图片描述

html结构

 <hot-table key="climate" ref="climateRegulateRef" :settings="climateReclassify"></hot-table>
 <el-button type="success"
            size="mini"
            icon="el-icon-plus"
            @click="addClimateReClassRow">
 </el-button>
 <el-button type="danger"
            size="mini"
            icon="el-icon-delete"
            @click="removeClimateReclassifyRow">
 </el-button>

表格数据初始化

        climateReclassify: {
          data: [{selectBox: false, newVal: 1, typeName: '农田', oldVal: '', type: ''}],
          colHeaders: ['', '新值', '类型名称', '原值', '种类'],
          colWidths: [50, 150, 150, 150, 150],
          columns: [
            {data: 'selectBox', type: 'checkbox'},
            {data: 'newVal', type: 'numeric', readOnly: false},
            {data: 'typeName'},
            {data: 'oldVal'},
            {data: 'type', editor: 'select', selectOptions: ['植被', '水体', '其他']}
          ],
          height: '100%',
          licenseKey: "non-commercial-and-evaluation" // 非商业用途声明
        },

新增表格行函数

addClimateReClassRow: function () {
  let climateTable = this.$refs.climateRegulateRef.hotInstance;
  let data = climateTable.getSourceData()
  data[data.length] = {selectBox: false, newVal: '', typeName: '', oldVal: '', type: ''};
  climateTable.loadData(data)
}

删除表格行函数

removeClimateReclassifyRow() {
        let climateTable = this.$refs.climateRegulateRef.hotInstance;
        let indexArr = []
        let sourceData = []
        let data = climateTable.getSourceData().concat()
        for (let i = 0; i < data.length; i++) {
          if (data[i].selectBox === true) {
            indexArr.push(i)
          } else {
            sourceData.push(data[i])
          }
        }
        if (indexArr.length === 0) {
          Message.warning("请至少选择一行数据删除");
          return;
        }
        if (sourceData.length === 0) {
          Message.warning("至少应保留一种类型");
          return;
        }
        climateTable.loadData(sourceData);
      }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值