国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue3 Antd 父子嵌套子表格

這篇具有很好參考價值的文章主要介紹了Vue3 Antd 父子嵌套子表格。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Vue3 Antd 父子嵌套子表格

父子嵌套子表格

目標1:可以點擊多個父節(jié)點表格,正確顯示子表格數(shù)據(jù)

目標2:父表格數(shù)據(jù)刷新重載,解決子表格數(shù)據(jù)不刷新問題

官方示例代碼,以及效果
https://www.antdv.com/components/table-cn#components-table-demo-nested-table
Vue3 Antd 父子嵌套子表格
可以看到官方示例十分簡單,使用了 <template #expandedRowRender> 插槽效果,并沒有后續(xù)的示例

 <template #expandedRowRender>
      <a-table :columns="innerColumns" :data-source="innerData" :pagination="false">
        <template #bodyCell="{ column }">
          <template v-if="column.key === 'state'">
            <span>
              <a-badge status="success" />
              Finished
            </span>
          </template>
          <template v-else-if="column.key === 'operation'">
            <span class="table-operation">
              <a>Pause</a>
              <a>Stop</a>
              <a-dropdown>
                <template #overlay>
                  <a-menu>
                    <a-menu-item>Action 1</a-menu-item>
                    <a-menu-item>Action 2</a-menu-item>
                  </a-menu>
                </template>
                <a>
                  More
                  <down-outlined />
                </a>
              </a-dropdown>
            </span>
          </template>
        </template>
      </a-table>
    </template>

解決方案

使用@expand事件解決

     <a-table @expand="rowExpand" :loading="tableLoading" @change="tableChange"
                   :pagination="tablePagination" :columns="columns" :data-source="financeData"
                   :scroll="{ x: 1300, y: 1000 }" class="components-table-demo-nested"
                   :rowKey="(record,index)=>{return record.id}" bordered>
            <template  #expandedRowRender="{record}">
              <a-table :columns="innerColumns" :data-source="innerDataMap[record.id]" :rowKey="(record,index)=>{return record.id}"
                       :pagination="false">
              </a-table>
            </template>
              <span class="table-operation" @click="handleFinance(record)">
                <a-button type="link">處理
                 <template #icon><EditTwoTone/></template>
                </a-button>
              </span>
            </template>
          </a-table>

Vue3 Antd 父子嵌套子表格

首先我們需要一個const expandedRowKeys = ref([]) 一個列表臨時存儲點擊展開的節(jié)點。

@expand=“rowExpand” 方法,監(jiān)聽展開的節(jié)點,把節(jié)點添加到緩存對象中

    function rowExpand(isExpand, record) {
      //提前為map.key =value 初始化一個空數(shù)組
      if (!innerDataMap.value[record.id]) {
        innerDataMap.value[record.id] = [];
      }

      if (isExpand) {
        // 將展開的行的 id 添加到 expandedRowKeys 數(shù)組中
        expandedRowKeys.value.push(record.id);

        // 將對應的子表格數(shù)據(jù)添加到 innerDataMap 中
        innerDataMap.value[record.id] = record.clist;
      } else {
        // 將展開的行的 id 從 expandedRowKeys 數(shù)組中刪除
        const index = expandedRowKeys.value.indexOf(record.id);
        if (index > -1) {
          expandedRowKeys.value.splice(index, 1);
        }

        // 將對應的子表格數(shù)據(jù)從 innerDataMap 中刪除
        delete innerDataMap.value[record.id];
      }

    }

可以看到嵌套子表格使用innerDataMap是一個Map而不是List,好處是,表格行數(shù)據(jù)更新,或者點擊表格上方查詢表格時,可以根據(jù)Map[Key]的方式刷新子表格數(shù)據(jù)

        <template  #expandedRowRender="{record}">
              <a-table :columns="innerColumns" :data-source="innerDataMap[record.id]" :rowKey="(record,index)=>{return record.id}"
                       :pagination="false">
              </a-table>
            </template>

點擊處理按鈕,修改當前父表格下子表格數(shù)據(jù),這時候需要回調reload()重新加載表格,由于使用expandedRowKeys參數(shù)記錄展開節(jié)點,只需要在請求父表格接口時候遍歷更新innerDataMap容器就可以了。文章來源地址http://www.zghlxwxcb.cn/news/detail-428449.html

reload(){
    queryIList(toData)
      .then((res) => {
        financeData.value = res['list']
        tablePagination.total = res.totalCount
        // 獲取當前展開的所有行的 ID
        const expandedRowIds = expandedRowKeys.value;

        // 遍歷展開的行,更新對應的子表格數(shù)據(jù)
        expandedRowIds.forEach(id => {
          const record = financeData.value.find(record => record.id === id);
          if (record) {
            innerDataMap.value[id] = record.clist;
          }
        });
      })
      .catch((e) => {
        console.log('e', e);
      }).finally(() => {
      tableLoading.value = false
});

}

到了這里,關于Vue3 Antd 父子嵌套子表格的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • csdn新星計劃vue3+ts+antd賽道——利用inscode搭建vue3(ts)+antd前端模板

    csdn新星計劃vue3+ts+antd賽道——利用inscode搭建vue3(ts)+antd前端模板

    大家好,我是yma16,本文分享利用inscode搭建vue3(ts)+antd前端模板。 2023 新星計劃 vue(ts)+antd賽道報名入口:https://bbs.csdn.net/topics/616574177 搭建vue3+ts+antd的指引:認識vite_vue3 初始化項目到打包 InsCode 是一個一站式的軟件開發(fā)服務平臺,從開發(fā)-部署-運維-運營,都可以在 InsCode 輕松

    2024年02月16日
    瀏覽(22)
  • 【vue3】vue3中父子組件傳參:

    【vue3】vue3中父子組件傳參:

    一、父傳子: 【1】父組件傳值: 【2】子組件接收: 二、父調用子方法: 【1】父組件調用: 【2】子組件暴露: 三、子組件發(fā)送emit方法給父組件: 【1】父組件: 【2】子組件調用:

    2024年02月13日
    瀏覽(21)
  • table 單元格中嵌套子表格 樣式撐開問題

    table 單元格中嵌套子表格 樣式撐開問題

    如圖,表格中的td嵌套表格,里邊表格把外層撐開,不能按100%顯示; 給父級table 加一個 table-layout:fixed; 樣式

    2024年02月09日
    瀏覽(13)
  • VUE3父子組件傳參

    父傳子 父組件 template ? ?sonComponent?:sendValue=\\\"value(//傳遞的值)\\\"/sonComponent /template //引入組件 import sonComponent from \\\"XXXXX\\\"; 子組件 //定義名字與父組件對應 const props = defineProps({ ? sendValue:{type: String,default:\\\'\\\'}? }) 子傳父 子組件 // 定義發(fā)送 const emit = defineEmits([\\\'sendValue\\\']) //發(fā)送(在想

    2024年02月07日
    瀏覽(20)
  • vue3-父子組件間通信

    在實際業(yè)務開發(fā)的過程中,我們時常會遇到組件間的通信問題,比如:父子組件間通信、同級組件間通信等。本篇文章中主要介紹父子組件間通信。父子組件間通信主要有以下常見形式: 方案 父組件向子組件 子組件向父組件 props/emits props emits v-model/emits v-model emits ref/emits

    2024年02月05日
    瀏覽(92)
  • Vue3父子組件相互調用方法

    Vue3父子組件相互調用方法

    下面演示均為使用 setup 語法糖的情況! 參考網(wǎng)址:https://cn.vuejs.org/api/sfc-script-setup.html#defineexpose 子組件需要使用defineExpose對外暴露方法,父組件才可以調用! 1.子組件 2.父組件 3.測試結果 1.父組件 2.子組件 3.測試結果 今天的分享就到這里啦~~ 如有錯誤,歡迎隨時雅正。

    2024年02月11日
    瀏覽(24)
  • vue3 父子組件傳值 記錄

    vue3 父子組件傳值 記錄

    最近這個組件之間傳值用的較多,我這該死的記性,總給忘記寫法,特此記錄下 補充:LeftView.vue 是父組件; Video.vue 是子組件 Video.vue 子組件 LeftView.vue 父組件 第一步 創(chuàng)建bus.js文件 第二步 分別在需要相互傳參的組件中引入bus.js文件,并相互傳參

    2024年02月11日
    瀏覽(22)
  • vue3父子組件相互調用方法詳解

    在vue3項目開發(fā)中,我們常常會遇到父子組件相互調用的場景,下面以setup語法糖格式詳細聊聊父子組件那些事兒。

    2024年02月11日
    瀏覽(23)
  • VUE3+TS(父子、兄弟組件通信)

    目錄 父傳子值、方法(子調用父值、方法) 子傳父值(父調用子值) 父讀子(子傳父)(父調用子值、方法) 兄弟(任意組件)通信 引入Mitt來完成任意組件通信 1、統(tǒng)一規(guī)范寫法,通過在子組件標簽上綁定屬性和值,來傳遞到子組件,子組件再通過defineProps來接收,先給其

    2023年04月08日
    瀏覽(21)
  • vue3 父子傳值的使用

    vue3 父子傳值的使用

    父傳子: ? setup語法糖的寫法: ? ?子傳父: ? setup語糖的寫法: ? ?

    2024年02月10日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包