欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue中el-table表格的表頭操作代碼

 更新時(shí)間:2024年03月02日 10:09:28   作者:牧杉-驚蟄  
本文通過(guò)實(shí)例代碼介紹對(duì)el-table表格的表頭操作方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

 效果1:?jiǎn)螌颖眍^合并

圖示1:

  •  說(shuō)明: header-cell-style函數(shù)用于給表頭添加樣式,其返回的值會(huì)被添加到表頭對(duì)應(yīng)樣式中去
  • 注意函數(shù)的形參中的column.id為單元格的class類(lèi)
  • 大家最好打印一下,結(jié)合審查dom看類(lèi)名

代碼:

<template>
  <el-table
    :data="tableData"
    border
    style="width: 600"
    :header-cell-style="headerCellStyle"
  >
    <el-table-column
      prop="name"
      label="姓名、年齡、家鄉(xiāng)"
      width="150"
      align="center"
    ></el-table-column>
    <el-table-column
      prop="age"
      label="年齡"
      width="150"
      align="center"
    ></el-table-column>
    <el-table-column
      prop="home"
      label="家鄉(xiāng)"
      width="150"
      align="center"
    ></el-table-column>
    <el-table-column
      prop="hobby"
      label="愛(ài)好"
      width="150"
      align="center"
    ></el-table-column>
  </el-table>
</template>
<script>
export default {
  data() {
    return {
      tableData: [
        {
          name: "孫悟空",
          age: 500,
          home: "花果山水簾洞",
          hobby: "大鬧天宮",
        },
        {
          name: "豬八戒",
          age: 88,
          home: "高老莊",
          hobby: "吃包子",
        },
        {
          name: "沙和尚",
          age: 1000,
          home: "通天河",
          hobby: "游泳",
        },
        {
          name: "唐僧",
          age: 99999,
          home: "東土大唐",
          hobby: "取西經(jīng)",
        },
      ],
    };
  },
  methods: {
    headerCellStyle({ row, column, rowIndex, columnIndex }) {
      // 第一步:設(shè)置表頭的第0列暫不操作,將地1列和第2列隱去使其消失
      if ((columnIndex == 1) | (columnIndex == 2)) {
        return { display: "none" };
      }
      // 第二步, 由于1、2列沒(méi)有了,后續(xù)列就會(huì)貼上來(lái)(后續(xù)列往左錯(cuò)位問(wèn)題)
      if ((rowIndex == 0) & (columnIndex == 0)) {
        // 解決后續(xù)列錯(cuò)位問(wèn)題,就是將隱去的第1、2列的位置再補(bǔ)上,通過(guò)第0列來(lái)補(bǔ)
        this.$nextTick(() => {
          // 原來(lái)第0列只占據(jù)一個(gè)位置,現(xiàn)在要去占據(jù)三個(gè)位置。即占據(jù)三列,即設(shè)置為橫向三個(gè)單元格
          document.querySelector(`.${column.id}`).setAttribute("colspan", "3");
          // 這里的column.id實(shí)際是dom元素的class,故用點(diǎn).不用井#,可審查dom驗(yàn)證
          // 通過(guò)設(shè)置原生的colspan屬性,讓原來(lái)的第一列只占據(jù)一個(gè)單元格的表頭占據(jù)3個(gè)單元格即可
        });
      }
    },
  },
};
</script>
<style lang="less">
.el-table {
  th {
    font-weight: bold;
    color: #333;
  }
}
</style>

看,基本上一樣的用法:先隱藏再設(shè)置橫跨豎跨單元格

colspan='number' 屬性,設(shè)置單元格可以橫跨幾列(默認(rèn)一個(gè)單元格橫向只占據(jù)一列)

圖示2:

代碼:

headerCellStyle({ row, column, rowIndex, columnIndex }) {
  // 第一步:隱去第2列單元格
  if (columnIndex == 2) {
    return { display: "none" };
  }
  // 第二步,讓第1列單元格橫跨兩列(默認(rèn)單元格只是橫跨一列)
  if ((rowIndex == 0) & (columnIndex == 1)) {
    this.$nextTick(() => {
      document.querySelector(`.${column.id}`).setAttribute("colspan", "2");
    });
  }
},

圖示3:

代碼:

headerCellStyle({ row, column, rowIndex, columnIndex }) {
  // 第一步:隱去第2列單元格
  if (columnIndex == 2) {
    return { display: "none" };
  }
  // 第二步,讓第1列單元格橫跨兩列(默認(rèn)單元格只是橫跨一列)
  if ((rowIndex == 0) & (columnIndex == 1)) {
    this.$nextTick(() => {
      document.querySelector(`.${column.id}`).setAttribute("colspan", "2");
    });
  }
},

圖示4:

代碼:

headerCellStyle({ row, column, rowIndex, columnIndex }) {
  // 第一步:隱去第1、2、3列單元格
  let hideColArr = [1, 2, 3];
  if (hideColArr.includes(columnIndex)) {
    return { display: "none" };
  }
  // 第二步,讓第0列單元格橫跨四列(默認(rèn)單元格只是橫跨一列)
  if ((rowIndex == 0) & (columnIndex == 0)) {
    this.$nextTick(() => {
      document.querySelector(`.${column.id}`).setAttribute("colspan", "4");
    });
  }
},

效果2:el-table多級(jí)表頭合并 圖示1:

說(shuō)明:

  •  多級(jí)表頭,需要進(jìn)一步通過(guò)rowIndex去找到對(duì)應(yīng)的單元格
  • 因?yàn)閱螌颖眍^,表頭只有1行,rowIndex肯定是0,所以寫(xiě)不寫(xiě)都無(wú)所謂
  • 但是多級(jí)表頭有不少行,所以需要使用 columnIndex,rowIndex 進(jìn)一步定位單元格
  • 類(lèi)似于通過(guò)X軸 Y軸的坐標(biāo)定位到某個(gè)單元格位置

代碼:

html部分需要el-table-column標(biāo)簽進(jìn)行嵌套

<template>
  <el-table
    :data="tableData"
    border
    style="width: 600"
    :header-cell-style="headerCellStyle"
  >
    <el-table-column prop="name" label="姓名" width="150" align="center">
      <el-table-column
        prop="name"
        label="三列基礎(chǔ)信息"
        width="150"
        align="center"
      ></el-table-column>
    </el-table-column>
    <el-table-column prop="name" label="年齡" width="150" align="center">
      <el-table-column
        prop="age"
        label="年齡"
        width="150"
        align="center"
      ></el-table-column>
    </el-table-column>
    <el-table-column prop="name" label="家鄉(xiāng)" width="150" align="center">
      <el-table-column
        prop="home"
        label="家鄉(xiāng)"
        width="150"
        align="center"
      ></el-table-column>
    </el-table-column>
    <el-table-column
      prop="hobby"
      label="愛(ài)好"
      width="150"
      align="center"
    ></el-table-column>
  </el-table>
</template>

js部分:

headerCellStyle({ row, column, rowIndex, columnIndex }) {
  // 把第1列第1行和第2列第1行的單元格隱去
  if ((columnIndex == 1) | (columnIndex == 2)) {
    if (rowIndex == 1) { // 加上rowIndex精準(zhǔn)定位
      return { display: "none" };
    }
  }
  // 然后讓第0列第1行的單元格橫向占據(jù)3個(gè)單元格位置填充剛剛隱去導(dǎo)致的空白
  if ((columnIndex == 0) & (rowIndex == 1)) { // 加上rowIndex精準(zhǔn)定位
    this.$nextTick(() => {
      document.querySelector(`.${column.id}`).setAttribute("colspan", "3");
    });
  }
},

圖示2:

代碼:

html部分

<template>
  <el-table
    :data="tableData"
    border
    style="width: 600"
    :header-cell-style="headerCellStyle"
  >
    <el-table-column
      prop="name"
      label="基本信息(姓名、年齡、家鄉(xiāng))"
      align="center"
    >
    </el-table-column>
    <el-table-column
      prop="age"
      label="年齡"
      align="center"
    >
    </el-table-column>
    <el-table-column
      prop="home"
      label="家鄉(xiāng)"
      align="center"
    >
    </el-table-column>
    <el-table-column prop="kind" label="所屬種族" align="center">
    </el-table-column>
    <el-table-column label="重要信息" align="center">
      <el-table-column label="公開(kāi)重要信息" align="center">
        <el-table-column prop="nickname" label="法號(hào)" align="center">
        </el-table-column>
        <el-table-column prop="hobby" label="愛(ài)好&性格" align="center">
        </el-table-column>
        <el-table-column prop="personality" label="性格" align="center">
        </el-table-column>
      </el-table-column>
      <el-table-column label="保密重要信息" align="center">
        <el-table-column prop="bornBackground" label="出身背景" align="center">
        </el-table-column>
        <el-table-column prop="skill" label="技能" align="center">
        </el-table-column>
      </el-table-column>
    </el-table-column>
  </el-table>
</template>

js部分:

<script>
export default {
  data() {
    return {
      tableData: [
        {
          name: "孫悟空",
          age: 500,
          home: "花果山水簾洞",
          kind: "monkey",
          nickname: "斗戰(zhàn)勝佛",
          hobby: "大鬧天宮",
          personality: "勇敢堅(jiān)韌、疾惡如仇",
          bornBackground: "仙石孕育而生",
          skill: "72變、筋斗云",
        },
        {
          name: "豬八戒",
          age: 88,
          home: "高老莊",
          kind: "pig",
          nickname: "凈壇使者",
          hobby: "吃包子",
          personality: "好吃懶做、貪圖女色",
          bornBackground: "天蓬元帥錯(cuò)投豬胎",
          skill: "36變",
        },
        {
          name: "沙和尚",
          age: 1000,
          home: "通天河",
          kind: "human",
          nickname: "金身羅漢",
          hobby: "游泳",
          personality: "憨厚老實(shí)、任勞任怨",
          bornBackground: "卷簾大將被貶下界",
          skill: "18變",
        },
        {
          name: "唐僧",
          age: 99999,
          home: "東土大唐",
          kind: "human",
          nickname: "檀功德佛",
          hobby: "取西經(jīng)",
          personality: "謙恭儒雅、愚善固執(zhí)",
          bornBackground: "金蟬子轉(zhuǎn)世",
          skill: "念緊箍咒",
        },
      ],
    };
  },
  methods: {
    headerCellStyle({ row, column, rowIndex, columnIndex }) {
      /**
       * 合并:基本信息(姓名、年齡、家鄉(xiāng))單元格【通過(guò)行與列的索引來(lái)合并】
       * */
      let colArr = [1, 2];
      if (colArr.includes(columnIndex)) {
        if (rowIndex == 0) {
          // 把第1列第0行和第2列第0行的單元格隱去
          return { display: "none" };
        }
      }
      if ((columnIndex == 0) & (rowIndex == 0)) {
        // 把第0列第0行的單元格橫向延伸,補(bǔ)上剛剛隱去的單元格位置,并上個(gè)色
        this.$nextTick(() => {
          document.querySelector(`.${column.id}`).setAttribute("colspan", "3");
        });
        return { background: "pink" };
      }
      /**
       * 合并:重要信息--->公開(kāi)重要信息--->愛(ài)好性格單元格 【通過(guò)單元格的文字內(nèi)容來(lái)合并】
       * */
      if (column.label == "性格") {
        return { display: "none" };
      }
      if (column.label == "愛(ài)好&性格") {
        this.$nextTick(() => {
          document.querySelector(`.${column.id}`).setAttribute("colspan", "2");
        });
        return { background: "orange" }; // 不加這個(gè)也行,加了只是為了更好區(qū)分
      }
      /**
       * 重要!重要!重要!
       *    我們想要合并表頭的單元格,需要先找到對(duì)應(yīng)單元格
       *    可以通過(guò)列column對(duì)象的label或者行與列索引來(lái)找到,找到以后進(jìn)行隱藏或合并
       *    也可以遍歷行row數(shù)組找,不過(guò)會(huì)麻煩一些,個(gè)人建議通過(guò)column來(lái)找
       * */
      // 通過(guò)column找
      if (column.label == "技能") {
        return { background: "#baf" };
      }
      // 通過(guò)row找
      for (const item of row) {
        if (item.label == "重要信息") {
          this.$nextTick(() => {
            document.querySelector(`.${item.id}`).style.background = "#ea66a6";
          });
          break;
        }
      }
    },
  },
};
</script>
  • 還可以,直接通過(guò)column.label找到對(duì)應(yīng)單元格,然后進(jìn)行合并單元格操作,不使用rowIndex和columnIndex了
  • 這種方式,在某些情況下,會(huì)更加方便
  • 但無(wú)論哪種方式,本質(zhì)思路都是先找到單元格,再進(jìn)行合并相關(guān)操作
headerCellStyle({ row, column, rowIndex, columnIndex }) {
  // 第一部分的合并
  if (column.label == "年齡") {
    return { display: "none" };
  }
  if (column.label == "家鄉(xiāng)") {
    return { display: "none" };
  }
  if (column.label == "基本信息(姓名、年齡、家鄉(xiāng))") {
    this.$nextTick(() => {
      document.querySelector(`.${column.id}`).setAttribute("colspan", "3");
    });
    return { background: "pink" };
  }
  // 第二部分的合并
  if (column.label == "性格") {
    return { display: "none" };
  }
  if (column.label == "愛(ài)好&性格") {
    this.$nextTick(() => {
      document.querySelector(`.${column.id}`).setAttribute("colspan", "2");
    });
    return { background: "orange" };
  }
},

到此這篇關(guān)于對(duì)el-table表格的表頭操作的文章就介紹到這了,更多相關(guān)el-table表頭內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3雙向綁定實(shí)現(xiàn)原理解讀

    vue3雙向綁定實(shí)現(xiàn)原理解讀

    這篇文章主要介紹了vue3雙向綁定實(shí)現(xiàn)原理解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue中$emit的用法詳解

    vue中$emit的用法詳解

    這篇文章主要介紹了vue中$emit的用法詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • vue-cli4.x創(chuàng)建企業(yè)級(jí)項(xiàng)目的方法步驟

    vue-cli4.x創(chuàng)建企業(yè)級(jí)項(xiàng)目的方法步驟

    這篇文章主要介紹了vue-cli4.x創(chuàng)建企業(yè)級(jí)項(xiàng)目的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Vue?實(shí)現(xiàn)新國(guó)標(biāo)紅綠燈效果實(shí)例詳解

    Vue?實(shí)現(xiàn)新國(guó)標(biāo)紅綠燈效果實(shí)例詳解

    這篇文章主要為大家介紹了Vue?實(shí)現(xiàn)新國(guó)標(biāo)紅綠燈效果實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • vue 獲取元素額外生成的data-v-xxx操作

    vue 獲取元素額外生成的data-v-xxx操作

    這篇文章主要介紹了vue 獲取元素額外生成的data-v-xxx操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • vue中的路由傳值與重調(diào)本路由改變參數(shù)

    vue中的路由傳值與重調(diào)本路由改變參數(shù)

    這篇文章主要介紹了vue中的路由傳值與重調(diào)本路由改變參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Electron-vue開(kāi)發(fā)的客戶端支付收款工具的實(shí)現(xiàn)

    Electron-vue開(kāi)發(fā)的客戶端支付收款工具的實(shí)現(xiàn)

    這篇文章主要介紹了Electron-vue開(kāi)發(fā)的客戶端支付收款工具的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • vue3中的Proxy一定要用Reflect的原因解析

    vue3中的Proxy一定要用Reflect的原因解析

    Reflect可以操作對(duì)象使用, proxy可以代理對(duì)象,但沒(méi)有找到為啥有時(shí)一定要在Proxy代理方法中使用Reflect,這篇文章主要介紹了vue3中的Proxy一定要用Reflect的原因解析,需要的朋友可以參考下
    2023-04-04
  • vue 對(duì)象添加或刪除成員時(shí)無(wú)法實(shí)時(shí)更新的解決方法

    vue 對(duì)象添加或刪除成員時(shí)無(wú)法實(shí)時(shí)更新的解決方法

    這篇文章主要介紹了vue 對(duì)象添加或刪除成員時(shí)無(wú)法實(shí)時(shí)更新的解決方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • Vue3使用Univer Docs創(chuàng)建在線編輯Excel的示例代碼

    Vue3使用Univer Docs創(chuàng)建在線編輯Excel的示例代碼

    本文介紹了如何在Vue3項(xiàng)目中集成UniverDocs,一個(gè)基于Luckysheet的企業(yè)文檔與數(shù)據(jù)協(xié)同解決方案,指導(dǎo)了從安裝到在頁(yè)面中使用的步驟,以及注意事項(xiàng),如數(shù)據(jù)格式轉(zhuǎn)換和二次開(kāi)發(fā)的靈活性,需要的朋友可以參考下
    2025-04-04

最新評(píng)論