vxe-grid與vxe-table實現(xiàn)表格尾部合并方式
在日常開發(fā)中,我們經(jīng)常需要對表格的尾部進行個性化處理,例如對總計進行計算顯示在表尾中等合并某些單元格以突出關(guān)鍵信息。
本文將以 vxe-table 和 vxe-grid 組件為例,詳細介紹如何在 Vue 項目中實現(xiàn)表格尾部的動態(tài)合并功能。
使用 vxe-grid 實現(xiàn)尾部合并
核心配置項
- border:控制表格邊框顯示
- height:設(shè)置表格高度
- columns:配置列定義
- data:綁定表格主體數(shù)據(jù)
- showFooter:控制底部行(footer)顯示
- footerData:綁定表格尾部數(shù)據(jù)
- mergeFooterItems:定義底部單元格合并規(guī)則
代碼示例
<template>
<vxe-grid
border
:columns="columns"
:data="tableData"
show-footer
:footer-data="footerData"
:merge-footer-items="mergeFooterItems"
/>
</template>
<script setup>
import { ref } from 'vue'
/**
* 定義尾部單元格合并規(guī)則
* 格式:{ row, col, rowspan, colspan }
* - row: 尾部行索引(從 0 開始)
* - col: 尾部列索引(從 0 開始)
* - rowspan: 縱向合并的單元格數(shù)量
* - colspan: 橫向合并的單元格數(shù)量
*/
const mergeFooterItems = ref([
{ row: 0, col: 0, rowspan: 1, colspan: 2 } // 合并第1行的前兩列
])
/**
* 定義表格尾部數(shù)據(jù)
* 每一項對應(yīng)尾部的一行數(shù)據(jù)
* 字段需與 columns 中定義的 field 保持一致
*/
const footerData = ref([
{ name: '總計', amount: '—', count: '100' } // 尾部顯示“總計”信息
])
const columns = ref([
//footerAlign: "right"---表格顯示位置
{ field: 'name', title: '名稱' ,footerAlign: "right"},
{ field: 'amount', title: '金額' },
{ field: 'count', title: '數(shù)量' }
])
const tableData = ref([
{ name: '商品A', amount: 100, count: 50 },
{ name: '商品B', amount: 200, count: 30 }
])
</script>動態(tài)切換合并方式
// 初始合并配置(合并前兩列)
gridOptions.mergeFooterItems = [
{ row: 0, col: 0, rowspan: 1, colspan: 2 }
]
// 切換為合并后兩列
function changeMerge() {
gridOptions.mergeFooterItems = [
{ row: 0, col: 1, rowspan: 1, colspan: 2 }
]
}
- 必須設(shè)置
showFooter: true顯示表尾 - 需通過
footerData提供尾部數(shù)據(jù) - 修改
mergeFooterItems后會自動觸發(fā)表格重繪
重點:footerAlign: "right"---表格顯示位置
官方文檔:Vxe Table v4 https://vxetable.cn/v4/#/component/grid/merge/footer
使用 vxe-table 實現(xiàn)尾部合并
核心配置差異
- 需手動通過
<vxe-column>渲染列 - 合并配置通過
:merge-footer-items屬性傳遞
代碼示例
<template>
<vxe-table
border
show-footer
:data="tableData"
:footer-data="footerData"
:merge-footer-items="mergeFooterItems"
>
<vxe-column field="name" title="名稱" />
<vxe-column field="amount" title="金額" />
<vxe-column field="count" title="數(shù)量" />
</vxe-table>
</template>
<script setup>
import { ref } from 'vue'
const mergeFooterItems = ref([
{ row: 0, col: 0, rowspan: 1, colspan: 2 }
])
//顯示在那個列就寫對應(yīng)列的field---name顯示在名稱列
const footerData = ref([
{ name: '總計', amount: '—', count: '100' }
])
const tableData = ref([
{ name: '商品A', amount: 100, count: 50 },
{ name: '商品B', amount: 200, count: 30 }
])
</script>
動態(tài)切換合并方式
const setMergeMode = (mode) => {
mergeFooterItems.value = mode === 1
? [{ row: 0, col: 0, colspan: 2 }]
: [{ row: 0, col: 1, colspan: 2 }]
}
關(guān)鍵點
- 需要同時設(shè)置
show-footer屬性 - 合并規(guī)則變更時會自動響應(yīng)更新
- 支持多行尾部數(shù)據(jù)的復雜合并
官方文檔:Vxe Table v4 https://vxetable.cn/v4/#/component/table/merge/footer
兩種方式對比總結(jié)
| 特性 | vxe-grid | vxe-table |
|---|---|---|
| 配置方式 | 集中式配置對象 | 分散式屬性綁定 |
| 適合場景 | 復雜表格場景 | 簡單表格或需要更高自由度時 |
| 動態(tài)更新 | 修改配置對象的屬性 | 直接更新響應(yīng)式數(shù)據(jù) |
| 代碼量 | 相對較少 | 相對較多 |
1. 動態(tài)列定義
- 通過 columns 數(shù)組動態(tài)定義列結(jié)構(gòu)
- 支持靈活調(diào)整列配置(字段名、標題、寬度等)
2. 尾部合并配置
- 通過 mergeFooterItems 數(shù)組控制合并規(guī)則
關(guān)鍵參數(shù):
- row:起始行索引
- col:起始列索引
- rowspan:縱向合并行數(shù)
- colspan:橫向合并列數(shù)
3. 數(shù)據(jù)綁定
- footerData 綁定底部顯示數(shù)據(jù)
- 數(shù)據(jù)結(jié)構(gòu)需與列定義的 field 對應(yīng)
4. 動態(tài)更新機制
- 使用響應(yīng)式變量(ref/reactive)
- 修改配置自動觸發(fā)界面更新
關(guān)鍵注意事項
- 合并范圍不能超出表格實際列數(shù)
- 合并后單元格內(nèi)容取自第一個指定單元格的值
- 需配合 footerData 使用才能顯示尾部內(nèi)容
- 多行尾部合并需確保規(guī)則不沖突
- 動態(tài)列場景需同步更新列索引
性能優(yōu)化建議
- 大數(shù)據(jù)量時避免頻繁更新合并規(guī)則
- 固定列寬提升渲染性能
- 復雜合并預(yù)先計算規(guī)則對象
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
深入詳解Vue3實現(xiàn)多環(huán)境配置與切換方式
這篇文章主要為大家詳細介紹了Vue3中實現(xiàn)多環(huán)境配置與切換方式的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2025-09-09
vue3和vue2掛載實例到全局(自定義消息提示框組件方式)
這篇文章主要介紹了vue3和vue2掛載實例到全局(自定義消息提示框組件方式),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
vue3向數(shù)組插入一條自定義數(shù)據(jù)實現(xiàn)方式
這篇文章主要介紹了vue3向數(shù)組插入一條自定義數(shù)據(jù)實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-09-09
vue圓環(huán)百分比進度條組件功能的實現(xiàn)
在一些頁面設(shè)置進度條效果給人一種很好的體驗效果,今天小編教大家vue圓環(huán)百分比進度條組件功能的實現(xiàn)代碼,代碼超級簡單啊,感興趣的朋友快來看下吧2021-05-05
從零開始Vue3數(shù)據(jù)交互之promise用法詳解
這篇文章主要介紹了Axios的基本使用,包括異步編程的基礎(chǔ)知識,如Promise的介紹、特點和基本用法,以及如何使用then、catch和async/await來處理異步操作,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2025-02-02
el-tree樹設(shè)置懶加載以及設(shè)置默認勾選方式
這篇文章主要介紹了el-tree樹設(shè)置懶加載以及設(shè)置默認勾選方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
關(guān)于Vue?"__ob__:Observer"屬性的解決方案詳析
在操作數(shù)據(jù)的時候發(fā)現(xiàn),__ob__: Observer這個屬性出現(xiàn)之后,如果單獨拿數(shù)據(jù)的值,就會返回undefined,下面這篇文章主要給大家介紹了關(guān)于Vue?"__ob__:Observer"屬性的解決方案,需要的朋友可以參考下2022-11-11

