elementUi - - - - table 勾选功能 & 禁止勾选

博客围绕ElementUI展开,介绍了表格的勾选功能和禁止勾选功能,并分别给出了实现这两个功能的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

elementUi - - - - table 勾选功能 & 禁止勾选

1. table 勾选功能

代码如下:

<el-table :data="tableData" ref="multipleTable" @selection-change="handleSelectionChange"  >
          <el-table-column type="selection" width="55"></el-table-column>
</el-table>

...
    // 勾选
    handleSelectionChange(val) {
      // 这里是勾选回调
      this.multipleSelection = val;
    },

上述代码即可实现勾选功能

2. table 禁止勾选

代码如下:

<el-table :data="tableData" ref="multipleTable" @selection-change="handleSelectionChange" :selectable="checkboxT" disabled="true" >
          <el-table-column type="selection" width="55"></el-table-column>
</el-table>

...
    // 勾选
    handleSelectionChange(val) {
      // 这里是勾选回调
      this.multipleSelection = val;
   },
   // 禁止勾选
   checkboxT(row, index) {
      return row.can_edit;
    },
### el-table 中子级显示勾选框而父级不显示的原因 Element UI 的 `el-table` 组件默认情况下会为每一行提供一个多框,无论该行是否有子节点。然而,在某些场景下,可能希望仅在子节点上显示多框,而在父节点上隐藏这些多框。 当配置了树形结构的数据时(通过设置 `row-key` 和 `tree-props`),如果想要实现特定的行为比如只让子项可,则需要自定义渲染逻辑来控制哪些行应该呈现择框[^1]。 具体来说,默认行为是由框架内部处理的,因此要改变这种表现形式就需要额外的工作来进行定制化开发。 ### 实现方案 为了达到这一目标,可以采取如下方法: #### 方法一:利用 slot 自定义列模板 可以通过定义 scoped-slot 来覆盖默认的择栏,并根据当前行是否为叶子节点决定是否渲染 checkbox。 ```html &lt;template&gt; &lt;div&gt; &lt;!-- 表格 --&gt; &lt;el-table :data=&quot;tableData&quot; row-key=&quot;id&quot; :tree-props=&quot;{children: &#39;children&#39;}&quot;&gt; &lt;el-table-column type=&quot;selection&quot; width=&quot;56&quot;&gt; &lt;template #default=&quot;scope&quot;&gt; &lt;!-- 判断是否为叶子节点 --&gt; &lt;span v-if=&quot;!isLeaf(scope.row)&quot;&gt; &lt;/span&gt; &lt;el-checkbox v-else&gt;&lt;/el-checkbox&gt; &lt;/template&gt; &lt;/el-table-column&gt; ... &lt;/el-table&gt; &lt;/div&gt; &lt;/template&gt; &lt;script setup lang=&quot;ts&quot;&gt; import { computed } from &#39;vue&#39;; // 计算属性判断某一行是不是叶子结点 const isLeaf = (row) =&gt; { return !Array.isArray(row.children) || row.children.length === 0; }; &lt;/script&gt; ``` 这种方法允许更灵活地控制每行的表现方式,同时也保持了原有的交互体验不变[^3]。 #### 方法二:重写 selection 列插槽并手动管理 selected 状态 另一种更为复杂但也更加可控的方式是完全接管整个 selection 功能,即不再依赖于内置的择机制而是自己维护一个外部的状态列表用于跟踪已项。这通常涉及到监听事件 (`@select`, `@select-all`) 并更新相应的数据源[^4]。 对于上述两种策略而言,前者相对简单易懂且改动较小;后者则提供了更高的灵活性但相应地也增加了代码量和技术难度。 ### 注意事项 需要注意的是,一旦择了自定义绘制择框的方法,就失去了 ElementUI 提供的一些便利特性,如自动计算全/半状态等。所以在实际应用过程中需权衡利弊做出合适的择[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值