el-table动态表格赋值任意单元格文本

<el-table
  class='mt10' type="selection" :data="tableData" border :cell-class-name="rowClass" ref="tables"
  @cell-click="cellClick">
  <TableSimpleCol
    v-for="(item, index) in colList" :key="index" :id="index"
    v-bind="item">
  </TableSimpleCol>
</el-table>
 
rowClass ({row, column, rowIndex, columnIndex}) {
        if (this.subjectTwoConcatObjArr.length > 0) {
          for (let k = 0; k < this.subjectTwoConcatObjArr.length; k++) {
            if (this.subjectTwoConcatObjArr[k].customerName) {
              this.tableData[this.subjectTwoConcatObjArr[k].rowIndex][this.subjectTwoConcatObjArr[k].props] = this.subjectTwoConcatObjArr[k].customerName
// this.table[3].yyy = ‘动态赋值文本’    // 3为横坐标,yyy为后台对应纵坐标字段
            } else {
              this.tableData[this.subjectTwoConcatObjArr[k].rowIndex][this.subjectTwoConcatObjArr[k].props] = '+'
            }
            if (this.subjectTwoConcatObjArr[k].type === 2) {
              if (rowIndex === this.subjectTwoConcatObjArr[k].rowIndex && columnIndex === this.subjectTwoConcatObjArr[k].columnIndex) {
                return 'bacColorf4984e' // 科目二对应下面样式显示不同颜色
              }
            } else if (this.subjectTwoConcatObjArr[k].type === 3) {
              if (rowIndex === this.subjectTwoConcatObjArr[k].rowIndex && columnIndex === this.subjectTwoConcatObjArr[k].columnIndex) {
                return 'bacColor317eb0' // 科目三
              }
            } else if (this.subjectTwoConcatObjArr[k].type === 5) {
              if (rowIndex === this.subjectTwoConcatObjArr[k].rowIndex && columnIndex === this.subjectTwoConcatObjArr[k].columnIndex) {
                return 'rgb196'
              }
            }
          }
        }
      },
      cellClick (row, column, cell, event) {
        if (cell.className.indexOf('rgb196') !== -1 || cell.className.indexOf('bacColor317eb0') !== -1 || cell.className.indexOf('bacColorf4984e') !== -1) {
          this.customerNameArr = []
          let find = this.formList.find(item => item.prop === 'customerId')
          this.$set(find, 'optList', [])
          let carId = Number(column.property.split('f')[1])
          let coachId = Number(column.property.split('f')[2])
          let timeId = row.id
          let timeList = this.ajaxData['odts'].find(item => item.id === timeId)
          let filterList = this.ajaxData['cas'].find(item => item.carId === carId && item.coachId === coachId && item.beginTime === timeList.beginTime && item.endTime === timeList.endTime)
          this.tmpData.id = filterList.id
          this.tmpData.names = event.target.innerText
          if (cell.className.indexOf('rgb196') !== -1) {
            this.showDialog = 3
            this.tmpData.type = ''
            this.dialogOpen()
          } else if (cell.className.indexOf('bacColor317eb0') !== -1) { // 科三
            this.showDialog = 2
            this.tmpData.type = 3
            this.dialogOpen()
          } else if (cell.className.indexOf('bacColorf4984e') !== -1) { // 科目二
            this.showDialog = 1
            this.tmpData.type = 2
            this.dialogOpen()
          }
        }
      }
    
    
    }
  }
</script>

<style rel="stylesheet/scss" type="text/scss" lang="scss">
  .TraineeManagement {
    .rgb196 {
      background: rgb(196, 196, 196) !important;
    }
    .bacColor317eb0 {
      background: #317eb0 !important;
    }
    .bacColorf4984e {
      background: #f4984e !important;
    }
    tr:hover {
      background: #fff;
    }
  }
</style>

`el-table` 是 Element UI 中的一个表格组件,它支持动态数据绑定,可以实现在运行时更新表格内容。当你需要根据某个数据源的变化实时渲染表格时,可以使用 JavaScript 或者 Vue.js 的响应式特性。 动态赋值的基本步骤如下: 1. **初始化表头和数据**:首先,在模板中声明一个 `el-table` 组件,并设置默认的列标题和初始的数据数组。 ```html <template> <el-table :data="tableData" :columns="tableColumns"> <!-- 表格行和单元格的内容 --> </el-table> </template> <script> export default { data() { return { tableData: [], // 初始的数据数组 tableColumns: [...], // 列配置数组 }; }, }; </script> ``` 2. **修改数据**:当你的数据源发生变化时,比如从服务器获取新数据或者用户交互触发更新,可以在 Vue 实例的生命周期钩子(如 `created`、`updated` 等)或者响应式方法(如 `watch`)中操作 `tableData`。 ```javascript methods: { fetchData() { this.$axios.get('/api/data').then(response => { this.tableData = response.data; // 更新数据 }); } }, created() { this.fetchData(); } ``` 3. **注意点**: - 当数据结构发生改变时,可能需要调整列配置 (`tableColumns`) 来匹配新的数据结构。 - 如果只是部分数据改变,可以只替换更改的部分而不是整个数据数组,这会提高性能。 - 使用 `v-model` 和 `v-bind` 结合,可以更方便地双向绑定数据到表格组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值