ElementUI - Table 表头排序

本文探讨了ElementUI-Table组件的排序功能局限性及优化方案。原生排序仅作用于当前页面,通过自定义表头实现全局排序,提升用户体验。介绍了使用render-header自定义表头的具体实现方法。

ElementUI - Table 表头自带排序功能,和排序事件,但是目前只是对当前界面的数据进行排序。

项目需求: 点击表头排序的时候,对所有数据进行排序。

初步方案: 在点击排序按钮的时,在排序事件sort-change 中,进行数据请求,
                 此时会先重拍一次当前页面的数据,再渲染接口返回数据。用户体验不是很好。

优化方案: 使用render-header自定义tableHeader,此时要使用render函数来创建表头。

getheaderTime(h) {
      const This = this
      return h('div', {
      },
        ['告警时间',
          h('span', {
            class: 'iline-table-sort'
          },
            [
              h('i', {
                'class': {
                  'el-icon-caret-bottom': This.orderByType === 'desc',
                  'el-icon-caret-top': This.orderByType === 'asc',
                  'active': This.orderBy === 'daqTime'
                },
                attrs: {
                  'orderByType': 'desc',
                  'orderType': 'daqTime'
                },
                on: {
                  click: This.clickHandler
                },
                style: {
                  fontSize: '22px'
                }
              })
            ]
          )
        ])
    }
### ElementUI `el-table` 组件自定义表头ElementUI框架中的`el-table`组件支持通过`:render-header`属性来自定义表头的内容和样式。这允许开发者灵活地控制每一列表头的表现形式。 对于简单的场景,可以直接利用内联函数来实现基本的定制化需求: ```html <el-table-column align="center" :render-header="(h, obj) => h('span', '这是自定义的标题')" > </el-table-column> ``` 当涉及到更复杂的逻辑处理或是希望传递额外参数时,则可以采用外部方法的形式来进行渲染操作[^1]: ```html <!-- HTML部分 --> <el-table-column align="center" :render-header="(h, obj) => renderHeader(h, obj, '你的参数')" width="155"> </el-table-column> <script> export default { methods: { renderHeader(h, { column }, param){ return h( "div", [ h("p", null, ["第一行"]), h("p", null, [`第二行(${param})`]) ] ); } } } </script> ``` 针对特定样式的调整,比如让表头的文字能够自动换行而不是强制单行显示,可以通过CSS样式覆盖的方式解决这个问题。具体来说,在全局或局部范围内添加如下样式规则即可生效[^2]: ```css /* CSS部分 */ /deep/ .el-table th.is-leaf{ white-space: pre-line; } ``` 如果还需要进一步改变默认排序图标的布局位置或者其他视觉效果上的优化,同样可以在对应的HTML结构基础上做相应的样式微调工作[^3]。 为了确保最佳实践并充分利用Element UI的功能特性,建议阅读官方文档获取更多关于API使用的细节说明。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值