這篇文章主要介紹如何實(shí)現(xiàn)element-ui table span-method行合并,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)勐臘免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。element-ui官網(wǎng)中關(guān)于行合并的例子是根據(jù)行號進(jìn)行合并的,這顯然不符合我們?nèi)粘i_發(fā)需求,因?yàn)橥ǔN覀僼able中的數(shù)據(jù)都是動態(tài)生成的,所以需要做一些修改。我們首先解讀一下官網(wǎng)實(shí)例中的各參數(shù)的意義:
objectSpanMethod({ row, column, rowIndex, columnIndex }) { if (columnIndex === 0) { //用于設(shè)置要合并的列 if (rowIndex % 2 === 0) { //用于設(shè)置合并開始的行號 return { rowspan: 2, //合并的行數(shù) colspan: 1 //合并的列數(shù),設(shè)為0則直接不顯示 }; } else { return { rowspan: 0, colspan: 0 }; } } }
研究這個(gè)例子后不難發(fā)現(xiàn),實(shí)現(xiàn)合并行的方法其實(shí)在每一行數(shù)據(jù)渲染的時(shí)候都會執(zhí)行,只不過在渲染過程中我們設(shè)置了它合并的行數(shù)和列數(shù),以得到不同的效果。所以我們需要生成一個(gè)與行數(shù)相同的數(shù)組記錄每一行設(shè)置的合并數(shù)。處理過程如下:
getSpanArr(data) { for (var i = 0; i < data.length; i++) { if (i === 0) { this.spanArr.push(1); this.pos = 0 } else { // 判斷當(dāng)前元素與上一個(gè)元素是否相同 if (data[i].name === data[i - 1].name) { this.spanArr[this.pos] += 1; this.spanArr.push(0); } else { this.spanArr.push(1); this.pos = i; } } } },
data就是我們從后臺拿到的數(shù)據(jù),通常是一個(gè)數(shù)組;spanArr是一個(gè)空的數(shù)組,用于存放每一行記錄的合并數(shù);pos是spanArr的索引。上述代碼意思是:如果是第一條記錄(索引為0),向數(shù)組中加入1,并設(shè)置索引位置;如果不是第一條記錄,則判斷它與前一條記錄是否相等,如果相等,則向spanArr中添入元素0,并將前一位元素+1,表示合并行數(shù)+1,以此往復(fù),得到所有行的合并數(shù),0即表示該行不顯示。
cellMerge({ row, column, rowIndex, columnIndex }) { if (columnIndex === 0) { const _row = this.spanArr[rowIndex]; const _col = _row > 0 ? 1 : 0; return { rowspan: _row, colspan: _col } } },
然后根據(jù)得到的數(shù)組spanArr對表格進(jìn)行合并渲染,并綁定合并方法
<el-table border :data="tableData" :span-method="cellMerge"> ...... </el-table>
效果圖如下:
注:后臺獲取數(shù)據(jù)的時(shí)候根據(jù)要在前臺進(jìn)行合并的字段進(jìn)行排序,使要合并的字段值相同的記錄依次相鄰。
合并多行的情況
arraySpanMethod ({ row, column, rowIndex, columnIndex }) { if (rowIndex === 1) { // 合并第二行 if (columnIndex === 1) { // 從第二列開始 return [2, 3] // 這里返回的是行和列的合并數(shù)量,可以返回一個(gè)數(shù)組,也可以返回一個(gè)對象,效果一樣 // 這里rowspan為2是行有兩行合并,colspan為3是列有3列合并,你要合并幾行幾列就寫上相應(yīng)的數(shù)字 // 這個(gè)判斷是把第一行的第3列,第4列的值省略,在合并的表格右邊直接填原先第5列的值,合并了幾列,就省略幾列的值 } else if (columnIndex === 2 || columnIndex === 3) { return [0, 0] } } else if (rowIndex === 2 && (columnIndex === 1 || columnIndex === 2 || columnIndex === 3)) { // 第二行的第2個(gè)數(shù),第3個(gè)數(shù),第4個(gè)數(shù)都要省略 return [0, 0] } }
以上是“如何實(shí)現(xiàn)element-ui table span-method行合并”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章題目:如何實(shí)現(xiàn)element-uitablespan-method行合并-創(chuàng)新互聯(lián)
URL地址:http://jinyejixie.com/article24/dipoce.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、建站公司、定制開發(fā)、域名注冊、營銷型網(wǎng)站建設(shè)、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容