el-table 获取当前table表头集合

文章讲述了如何使用SortableJS在前端开发中实现动态表头拖拽功能,通过递归获取el-table-column并根据需求筛选和存储表头信息,以便动态渲染和处理多级表头。

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

前言:
    要做表头拖拽功能,用的sortablejs,之前是一个一个的el-table-column页面元素,我们要获取到所有要拖拽的表头放到数组内动态渲染:

//获取表头方法
loadCustom() {
	let tableHeader = []
	let tableHeaders = []
	//所有表格数据  $refs对应的表头
	tableHeader = this.$refs['multipleTable'].store.states._columns
	if (tableHeader && tableHeader.length > 0) {
		//递归出需要的表头数据 放进数组里
		tableHeader.forEach((column, _index) =>{
			//这里根据需求有条件去取舍 如果是多级表头的是 判断是否有子表头:column.children.length >0 有的话再往里放
			if(column.property){
			    //这里根据需要放入需要的相关 参数
				tableHeaders.push({
					id:_index,
					show: true,
					prop: column.property,
					label: column.label,
					sortable: column.sortable,
					align: column.align,
					width: column.width,
					template: true
				})
			}
			
		})
	}
	console.log('处理后想要的表头集合tableHeaders===' + JSON.stringify(tableHeaders))
},

`el-table` 是 Element UI 中的一个表格组件,它提供了丰富的功能和自定义选项,包括点击单元格事件处理。如果你想要获取多级表头(即嵌套的表头或树形结构),你需要利用它的 `row-header` 和 `children` 属性,以及 `expand-row-keys` 或者 `tree-props` 来实现展开和折叠的功能。 具体步骤如下: 1. **设置 row-header**: 在 `el-table-column` 中添加 `row-header` 属性,定义每个行的表头内容。例如,对于一级表头: ```html <el-table-column type="index" label="索引"></el-table-column> <el-table-column prop="header1" label="一级表头1" row-header></el-table-column> ``` 2. **管理多级表头**: 如果有多级,可以在每个节点的 `children` 数组中包含子节点。在每个子节点的 `el-table-column` 中也可以添加 `row-header` 属性,表示二级表头: ```html <el-table-column prop="subHeader1" label="二级表头1" row-header></el-table-column> ``` 3. **展开/折叠行**: 使用 `expand-row-keys` 或者 `tree-props` 根据实际数据结构配置展开折叠规则。比如,你可以为每一项数据添加一个 `expanded` 属性来控制是否展开: ```javascript data() { return { tableData: [ { id: '1', header1: '父级1', children: [{ id: '1-1', subHeader1: '子级1' }] }, // ... ], expandRowKeys: [] // 初始不展开任何行 } }, methods: { toggleExpand(row) { this.expandRowKeys = [...this.expandRowKeys, row.id]; // 展开 // this.expandRowKeys.filter(key => key !== row.id); // 收缩 } } ``` 当你在表格中点击一个单元格,可以通过监听 `@row-click` 事件,然后判断当前行是否可展开来进一步操作: ```javascript <template> <el-table :data="tableData" @row-click="handleRowClick"> <!-- 表格列 --> </el-table> </template> <script> export default { methods: { handleRowClick(row) { if (row.children && !row.expanded) { this.toggleExpand(row); } else if (row.expanded) { // 处理收起操作 } } } }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值