element table多选和单选

多选

<el-table :data="tableData" border @selection-change="handleSelectionChange">
          <el-table-column type="selection" width="40px"  :selectable="handleDisable"></el-table-column>      
如果有条件判断是否可勾选:
    handleDisable(row,index){
   //返回true或false
  }handleSelectionChange(val){
        this.chek = val;
    },

单选

<el-table :data="tableData" border @selection-change="handleSelectionChange" ref="tb" @select-all="onSelectAll">
          <el-table-column type="selection" width="40px"></el-table-column>  
    handleSelectionChange(val){
      if(val.length > 1){
        this.$refs.tb.clearSelection()
        this.$refs.tb.toggleRowSelection(val.pop())
      }else{
        this.chek = val;
      }  
    },
    onSelectAll () {
      this.$refs.tb.clearSelection()
    },
### 实现 Element UI 表格单选功能 为了将 Element UI 的表格改为支持单选的功能,可以通过监听 `selection-change` 事件并手动控制中逻辑来实现。以下是具体的解决方案: #### 方法一:通过 JavaScript 控制中行为 可以在 `selectCur` 函数中清除之前的中项,并仅保留当前行的中状态。 ```javascript methods: { selectCur(val, row) { console.log(val, 'val'); // 当前中的数据 console.log(row, 'row'); // 当前行的数据 this.$refs.selectTable.clearSelection(); // 清除所有已项 this.$refs.selectTable.toggleRowSelection(row, true); // 设置当前行为唯一中项 } } ``` 上述代码实现了当用户点击某一行时,先清空之前所有的中状态,再单独设置该行为新的中状态[^1]。 #### 方法二:绑定 `@selection-change` 事件处理逻辑 如果需要更灵活的方式,则可以利用 `@selection-change` 事件监听器,确保每次只允许有一个中项。 ```html <el-table ref="selectTable" :data="tableData" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55"></el-table-column> <!-- 其他列 --> </el-table> ``` 对应的 Vue 方法如下: ```javascript data() { return { currentRow: null // 存储当前中的行 }; }, methods: { handleSelectionChange(selection) { if (selection.length > 0) { const selectedRow = selection[selection.length - 1]; // 获取最新中的行 this.currentRow = selectedRow; // 如果有余的择,移除它们 if (this.$refs.selectTable) { this.$refs.selectTable.clearSelection(); this.$refs.selectTable.toggleRowSelection(selectedRow, true); } } else { this.currentRow = null; // 取消中时重置存储变量 } } } ``` 这种方法能够有效防止个项目同时被中,从而达到单选的效果[^4]。 #### 自定义样式(可) 对于某些特殊需求,可能还需要调整禁用状态下单选框的表现形式。这可以通过覆盖默认 CSS 或者使用插槽来自定义渲染内容完成[^2]。 --- ### 示例完整代码片段 以下是一个完整的示例代码,展示了如何结合以上两种方式构建一个具有单选功能的 Element UI 表格: ```vue <template> <div> <el-table ref="selectTable" :data="tableData" style="width: 100%" @selection-change="handleSelectionChange" > <el-table-column type="selection" width="55"> </el-table-column> <el-table-column prop="name" label="Name" width="180"> </el-table-column> <el-table-column prop="address" label="Address"> </el-table-column> </el-table> </div> </template> <script> export default { data() { return { tableData: [ { name: "John", address: "New York" }, { name: "Doe", address: "Los Angeles" }, { name: "Jane", address: "Chicago" } ], currentRow: null, }; }, methods: { handleSelectionChange(selection) { if (selection.length > 0) { const selectedRow = selection[selection.length - 1]; this.currentRow = selectedRow; if (this.$refs.selectTable) { this.$refs.selectTable.clearSelection(); this.$refs.selectTable.toggleRowSelection(selectedRow, true); } } else { this.currentRow = null; } } } }; </script> ``` 此代码不仅提供了基本的单选功能,还包含了简单的表头配置以及基础样式的应用[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值