实习总结第七谈-----------vue中element-ui的表格行高怎么控制

依旧在我负责的当前项目中举例子:

我的表格要求是一页只显示10条数据,且纵向不能产生滚动条,这样就意味着不能设置表格的整体高度来控制,那样会会产生滚动条,要么在表格纵向产生滚动条,要么在屏幕纵向产生滚动条,这时候我就想到了控制表格每一行的高度降低,就不会 十条数据就产生滚动条了,方法如下:

一:定义一个table表格的style 的回调方法,如图

该方法是element插件中的文档有的固定方法

二:将该方法绑定在要控制行高的表格上:

在表格头部绑定控制行高的函数

三:表格行高被控制后的效果图:

控制行高的效果图,没有产生滚动条

温馨提示:                  

<think>根据用户需求,用户希望在使用Element UI的普通表格组件时,实现取消选中的效果。这通常涉及到清除已选中的控制选中状态。 在Element UI表格中,要实现单选并支持取消选中,可以通过以下步骤实现: 1. 使用`el-table`组件的`highlight-current-row`属性可以开启单选亮当前的功能。但是默认情况下,点击已选中的不会取消选中,需要额外处理。 2. 通过监听点击事件(`row-click`)或使用`@click`事件,在事件处理函数中判断当前点击的是否已经被选中,如果是,则清除选中状态;如果不是,则选中该。 具体实现方法如下: ### 方法1:使用`current-change`事件和`row-click`事件结合 -表格上设置`highlight-current-row`属性,这样表格亮当前选中的- 绑定`current-change`事件,用于记录当前选中的(`currentRow`)。 - 绑定`row-click`事件,在点击时,判断当前点击的是否与已选中的相同。如果相同,则清除选中(将`currentRow`设为`null`);如果不同,则设置当前(实际上`current-change`事件会自动处理)。 但是,由于`current-change`事件在选中变化时触发,而直接设置`currentRow`为`null`并不会触发`current-change`事件,因此我们需要在模板中通过`ref`获取表格实例,然后调用其`setCurrentRow`方法来设置当前。 示例代码: ```html <template> <el-table ref="singleTable" :data="tableData" highlight-current-row @row-click="handleRowClick" style="width: 100%" > <!-- 列定义 --> <el-table-column property="date" label="日期"></el-table-column> <el-table-column property="name" label="姓名"></el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [/* 表格数据 */], currentRow: null // 当前选中的 }; }, methods: { handleRowClick(row, column, event) { // 如果点击的是已选中的,则取消选中 if (row === this.currentRow) { this.$refs.singleTable.setCurrentRow(); this.currentRow = null; } else { // 否则,选中该(实际上setCurrentRow会触发current-change事件,从而更新currentRow) this.$refs.singleTable.setCurrentRow(row); } } }, watch: { // 也可以监听currentRow的变化 } }; </script> ``` ### 方法2:使用`row-class-name`属性配合样式控制(不推荐) 另一种思路是通过自定义样式,但这种方法并不能真正取消选中,只是视觉上取消亮,且无法通过表格的API获取当前选中。因此不推荐。 ### 方法3:使用多选表格模拟单选并支持取消 使用多选表格(`el-table`的`type="selection"`),但设置单选(通过`select`事件控制每次只能选一),并在点击已选中的时取消选中。 示例代码: ```html <template> <el-table ref="multipleTable" :data="tableData" @select="handleSelect" style="width: 100%" > <el-table-column type="selection" width="55"></el-table-column> <!-- 其他列 --> </el-table> </template> <script> export default { data() { return { tableData: [/* 表格数据 */], selectedRow: null // 当前选中的 }; }, methods: { handleSelect(selection, row) { // 如果当前已经被选中(即在selection数组中),则再次点击会取消选中,此时selection数组为空或为其他 // 但我们需要模拟单选,所以先清除所有选中 this.$refs.multipleTable.clearSelection(); // 如果当前点击的不是之前选中的(即新选中的),则选中它 if (row !== this.selectedRow) { this.$refs.multipleTable.toggleRowSelection(row, true); this.selectedRow = row; } else { // 否则,说明是取消选中,将selectedRow置为null this.selectedRow = null; } } } }; </script> ``` 但是这种方法在取消选中时,由于先执了`clearSelection`,然后并没有选中任何,所以可以达到取消选中的效果。但是注意,这种方法每次只能选中一。 ### 总结 根据用户的需求,推荐使用方法1(使用`highlight-current-row`)来实现单选且可取消选中的效果,因为它更符合单选的语义,且Element UI原生支持。 相关问题: 1. 在Element UI表格中,如何实现多选并支持取消单个选中? 2. Element UI表格中,如何获取当前选中的数据? 3. 如何禁用Element UI表格中的某些的选中功能? [^1]: Element-ui中Radio组件取消选中 [^2]: vue+element-ui实现表格编辑 [^3]: element-ui表格实现选中删除功能 [^4]: element-ui实现表格单选的功能</think>### Element UI 普通表格实现取消选中效果 在 Element UI 的普通表格中实现取消选中效果,可以通过以下两种常用方法实现: --- #### 方法 1:通过 `current-row-key` 和 `row-click` 实现(推荐) ```html <template> <el-table :data="tableData" highlight-current-row :current-row-key="currentRowKey" @row-click="handleRowClick" > <!-- 列定义 --> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { id: 1, name: '张三', age: 25 }, { id: 2, name: '李四', age: 30 } ], currentRowKey: null // 存储当前选中的唯一标识 }; }, methods: { handleRowClick(row) { // 点击已选中的时取消选中 if (this.currentRowKey === row.id) { this.currentRowKey = null; } // 点击未选中的时选中 else { this.currentRowKey = row.id; } } } }; </script> ``` **实现原理**: 1. 使用 `highlight-current-row` 开启亮 2. 通过 `current-row-key` 绑定当前选中的唯一标识(如 id) 3. 在 `@row-click` 事件中切换选中状态: - 点击已选中的时,将 `currentRowKey` 设为 `null` 取消选中 - 点击未选中的时,将 `currentRowKey` 设为该 id --- #### 方法 2:通过 `ref` 操作表格实例 ```html <template> <el-table ref="myTable" :data="tableData" highlight-current-row @row-click="handleRowClick" > <!-- 列定义 --> </el-table> </template> <script> export default { data() { return { tableData: [/* 数据 */], currentRow: null // 存储当前选中 }; }, methods: { handleRowClick(row) { // 点击已选中的时取消选中 if (this.currentRow === row) { this.$refs.myTable.setCurrentRow(); // 清空选中 this.currentRow = null; } // 点击未选中的时选中 else { this.currentRow = row; } } } }; </script> ``` **关键 API**: - `this.$refs.tableRef.setCurrentRow()`:清空当前选中 - `this.$refs.tableRef.setCurrentRow(row)`:设置特定为选中状态 --- #### 补充说明 1. **取消选中时的视觉反馈**: ```css /* 隐藏默认选中样式 */ .el-table__body tr.current-row > td { background-color: transparent !important; } ``` 2. **多场景应用**: - 结合操作按钮取消选中: ```javascript clearSelection() { this.$refs.myTable.setCurrentRow(); this.currentRow = null; } ``` 3. **完整流程**: ```mermaid graph TD A[点击表格] --> B{是否已选中?} B ----> C[取消选中] B ----> D[设置选中] C --> E[更新currentRowKey为null] D --> F[更新currentRowKey为ID] ``` --- ### 相关问题 1. 如何在 Element UI 表格中实现双击取消选中效果? 2. Element UI 表格的多选模式下如何实现单个选项取消选中? 3. 如何保存和恢复 Element UI 表格的选中状态? 4. 在 Vue3 + Element Plus 中如何实现相同的取消选中效果? 5. 如何为取消选中的添加自定义动画效果? [^1]: Element-ui中Radio组件取消选中 [^2]: vue+element-ui实现表格编辑 [^3]: element-ui表格实现选中删除功能 [^4]: element-ui实现表格单选的功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值