最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Element-Plus表格實現(xiàn)Table自定義合并行數(shù)據(jù)

 更新時間:2024年12月02日 08:18:34   作者:代碼喵仔  
在開發(fā)項目中,我們時常會用到表格,許多需求可能會要求自定義特定的行或列,下面就跟隨小編一起來學習一下在實際開發(fā)中如何實現(xiàn)這一要求吧

在開發(fā)項目中,我們時常會用到表格,許多需求可能會要求自定義特定的行或列。

接下來,我們將探討在實際開發(fā)中如何應對這一挑戰(zhàn)。

本文案例采用的技術(shù):

名稱版本
Vue3^3.5.12
element-plus^2.8.8

知識點

我們先來復習下2個知識點,來自element-plus文檔 table

1、自定義表頭

通過設置 slot 來自定義表頭。(只貼出重點代碼)

<el-table :data="filterTableData" style="width: 100%">
    <el-table-column label="Date" prop="date" />
    <el-table-column label="Name" prop="name" />
    <el-table-column align="right">
      <template #header>
        <el-input v-model="search" size="small" placeholder="Type to search" />
      </template>
      <template #default="scope">
        <el-button size="small" @click="handleEdit(scope.$index, scope.row)">
          Edit
        </el-button>
        <el-button
          size="small"
          type="danger"
          @click="handleDelete(scope.$index, scope.row)"
        >
          Delete
        </el-button>
      </template>
    </el-table-column>
  </el-table>

其中可以看出,通過 <template #header> 自定義表頭,<template #default="scope"> 自定義內(nèi)容。

2、合并行或列

多行或多列共用一個數(shù)據(jù)時,可以合并行或列。

通過給 table 傳入span-method方法可以實現(xiàn)合并行或列, 方法的參數(shù)是一個對象,里面包含當前行 row、當前列 column、當前行號 rowIndex、當前列號 columnIndex 四個屬性。 該函數(shù)可以返回一個包含兩個元素的數(shù)組,第一個元素代表 rowspan,第二個元素代表 colspan。 也可以返回一個鍵名為 rowspan 和 colspan 的對象。

 <el-table
      :data="tableData"
      :span-method="arraySpanMethod"
      border
      style="width: 100%"
    >
      <el-table-column prop="id" label="ID" width="180" />
      <el-table-column prop="name" label="Name" />
      <el-table-column prop="amount1" sortable label="Amount 1" />
      <el-table-column prop="amount2" sortable label="Amount 2" />
      <el-table-column prop="amount3" sortable label="Amount 3" />
    </el-table>

<script lang="ts" setup>
// 省略其他代碼...
const arraySpanMethod = ({
  row,
  column,
  rowIndex,
  columnIndex,
}: SpanMethodProps) => {
  if (rowIndex % 2 === 0) {
    if (columnIndex === 0) {
      return [1, 2]
    } else if (columnIndex === 1) {
      return [0, 0]
    }
  }
}
</script>

實戰(zhàn)開發(fā)

假設一個需求:在最后一行新增一條自定義的行數(shù)據(jù)。

結(jié)合上述2個知識點,我們可以進行改進:

<template>
  <el-table :data="tableData" :span-method="arraySpanMethod" border style="width: 500px">
    <el-table-column prop="id" label="ID" width="100">
      <template #default="scope">
        <span v-if="scope.$index === tableData.length - 1">
          <span>是否確認信息:</span>
          <el-radio-group v-model="scope.row.confirmFlag">
            <el-radio :value="true">確認</el-radio>
            <el-radio :value="false">未確認</el-radio>
          </el-radio-group>
        </span>
        <template v-else>{{ scope.row.id }}</template>
      </template>
    </el-table-column>
    <el-table-column prop="name" label="姓名" />
    <el-table-column prop="age" label="年齡" />
  </el-table>
</template>

<script setup lang="ts">
import type { TableColumnCtx } from 'element-plus'

interface User {
  id?: string
  name?: string
  age?: number
  confirmFlag?: boolean
}

interface SpanMethodProps {
  row: User
  column: TableColumnCtx<User>
  rowIndex: number
  columnIndex: number
}

const arraySpanMethod = ({ row, column, rowIndex, columnIndex }: SpanMethodProps) => {
   // 最后一行
  if (rowIndex === tableData.length - 1) {
  // [1,3] 占一行三列
    return [1, 3]
  }
}

const tableData: User[] = [
  {
    id: '1',
    name: 'Tom1',
    age: 20,
  },
  {
    id: '2',
    name: 'Tom2',
    age: 30,
  },
  {
    id: '3',
    name: 'Tom3',
    age: 40,
  },
  // 新增一條自定義的數(shù)據(jù)
  {
    confirmFlag: true,
  },
]
</script>

<style scoped></style>

到此這篇關于Element-Plus表格實現(xiàn)Table自定義合并行數(shù)據(jù)的文章就介紹到這了,更多相關Element-Plus自定義合并行數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 淺析vue中$nextTick的作用與原理

    淺析vue中$nextTick的作用與原理

    這篇文章主要為大家詳細介紹一下Vue中$nextTick的作用于原理,這也是面試中常??嫉降膯栴},文中的示例代碼講解詳細,對我們深入了解Vue有一定的幫助,需要的小伙伴可以參考一下
    2023-10-10
  • Vue實現(xiàn)點擊按鈕復制文本內(nèi)容的例子

    Vue實現(xiàn)點擊按鈕復制文本內(nèi)容的例子

    今天小編就為大家分享一篇Vue實現(xiàn)點擊按鈕復制文本內(nèi)容的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 詳解vue實現(xiàn)坐標拾取器功能示例

    詳解vue實現(xiàn)坐標拾取器功能示例

    這篇文章主要介紹了詳解vue實現(xiàn)坐標拾取器功能示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • vue攔截器及請求封裝代碼

    vue攔截器及請求封裝代碼

    這篇文章主要介紹了vue攔截器及請求封裝代碼,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue項目如何關閉語法檢查

    Vue項目如何關閉語法檢查

    這篇文章主要介紹了Vue項目如何關閉語法檢查問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Vue3+Springboot實現(xiàn)前后端防抖增強的示例代碼

    Vue3+Springboot實現(xiàn)前后端防抖增強的示例代碼

    這篇文章主要為大家詳細介紹了Vue3如何結(jié)合Springboot實現(xiàn)前后端防抖增強功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-06-06
  • VUE學習寶典之el-dialog使用示例

    VUE學習寶典之el-dialog使用示例

    在我工作過程中使用el-dialog的需求挺多的,也積累了一下使用技巧,這篇文章主要給大家介紹了關于VUE學習寶典之el-dialog使用的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • vue組件之間通信方式實例總結(jié)【8種方式】

    vue組件之間通信方式實例總結(jié)【8種方式】

    這篇文章主要介紹了vue組件之間通信方式,結(jié)合實例形式總結(jié)分析了vue.js的8種組件通信方式與相關操作注意事項,需要的朋友可以參考下
    2019-02-02
  • 詳解如何實現(xiàn)Vue組件的動態(tài)綁定

    詳解如何實現(xiàn)Vue組件的動態(tài)綁定

    Vue.js 是一個漸進式框架,用于構(gòu)建用戶界面,在開發(fā)過程中,我們經(jīng)常需要根據(jù)不同的條件動態(tài)顯示組件,在本文中,我將詳細介紹如何實現(xiàn)Vue組件的動態(tài)綁定,提供示例代碼,以幫助你更深入地理解這個概念,需要的朋友可以參考下
    2024-11-11
  • vue路徑寫法之關于./和@/的區(qū)別

    vue路徑寫法之關于./和@/的區(qū)別

    這篇文章主要介紹了vue路徑寫法之關于./和@/的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論

闽清县| 唐山市| 隆化县| 威远县| 余庆县| 潮安县| 沂源县| 喜德县| 中江县| 如东县| 娄底市| 福安市| 上林县| 高碑店市| 安多县| 于田县| 红原县| 吉木萨尔县| 莎车县| 临西县| 涪陵区| 会理县| 永川市| 华蓥市| 资阳市| 聊城市| 仲巴县| 香格里拉县| 新丰县| 永康市| 会泽县| 慈利县| 安阳市| 桂林市| 嵊泗县| 南和县| 山丹县| 富宁县| 河南省| 山东省| 双辽市|