如何在Vuetify中将可扩展表与扩展面板合并结合?

eyh26e7m  于 2023-11-21  发布在  Vue.js
关注(0)|答案(1)|浏览(180)

我想将合并两个独立的Vuetify功能合并为一个:

  1. https://vuetifyjs.com/en/components/data-tables-->可扩展的数据表(但理想情况下,扩展时包含多个数据行)
  2. https://vuetifyjs.com/en/components/expansion-panels-->外部控制扩展面板
    最终,我们的目标是拥有一个类似于以下内容的表(扩展/折叠所有一的表):https://codepen.io/lzhoucs/pen/aadaJx
    这个表格的问题是,尽管我的项目中有相应的代码,但某些功能还是不能正常工作--比如点击打开和关闭一个表格。我相信这是因为这是一个与我使用的Vue版本不同的版本,我使用的是最新的,因为我发现了一些旧的样式。
    我尝试了很多方法,但最成功的尝试是在表中创建表。下面是代码:
<template>
<v-container>
  <v-data-table
    :headers="headers"
    :items="projects"
    :expanded="expanded"
    item-key="name"
    show-expand
    class="elevation-1"
    @click:row="clicked"
  >
    <template v-slot:expanded-item="{ headers }">
      <td :colspan="headers.length">
      <v-data-table
  :headers="peopleHeaders"
  :items="people"
  item-key='name'
  hide-default-footer
  class='elevation-1'>
  <template slot="item" slot-scope="props">
        <tr>
          <td>{{props.item.name}}</td>
          <td>{{props.item.major}}</td>
          <td>{{props.item.preference}}</td>
          <td>
          <v-btn color='success'>Accept</v-btn>
          <v-btn color='error'>Reject</v-btn>
          </td>
        </tr>
      </template>
  </v-data-table>
  </td>
    </template>
  </v-data-table>
</v-container>
</template>

<script>
export default {
  data() {
    return {
      expanded: [],
      headers: [
        {
          text: 'Name',
          align: 'left',
          sortable: true,
          value: 'name',
        },
        { text: 'Status', value: 'Status' },
      ],
      projects: [
        {
          name: '#this is the project they applied to',
          Status: 'Status: Pending',
        },
      ],
      peopleHeaders: [
        {
          text: 'Name',
          align: 'left',
          sortable: true,
          value: 'name',
        },
        {
          text: 'Major',
          align: 'left',
          sortable: true,
          value: 'major',
        },
        {
          text: 'Preference',
          align: 'left',
          sortable: true,
          value: 'preference',
        },
      ],
      people: [
        {
          name: 'BORB',
          major: 'SWE',
          preference: 'idk',
        },
      ],
    };
  },
  methods: {
    clicked(value) {
      this.expanded.push(value);
    },
  },
};
</script>

字符串
任何建议,如何结合合并的两个特点,以实现表所需的将不胜感激。

gab6jxml

gab6jxml1#

我今天刚遇到这个问题,并找到了解决方案。不确定操作是否已经解决了这个问题,但让我提供我的解决方案:

<template>
  <v-expansion-panels>
    <v-expansion-panel>
      <v-expansion-panel-title>First table</v-expansion-panel-title>
      <v-expansion-panel-text>
        <v-data-table :headers="headers" :items="items"></v-data-table>
      </v-expansion-panel-text>
    </v-expansion-panel>
    <v-expansion-panel>
      <v-expansion-panel-title>Second table</v-expansion-panel-title>
      <v-expansion-panel-text>
        <v-data-table :headers="headers" :items="items"></v-data-table>
      </v-expansion-panel-text>
    </v-expansion-panel>
  </v-expansion-panels>
</template>

<script>
  export default {
    data: () => ({
      items: [
        // Define the items property here
        {
          name: 'African Elephant',
          species: 'Loxodonta africana',
          diet: 'Herbivore',
          habitat: 'Savanna, Forests',
        },
        {
          name: 'African Elephant',
          species: 'Loxodonta africana',
          diet: 'Herbivore',
          habitat: 'Savanna, Forests',
        },
        {
          name: 'African Elephant',
          species: 'Loxodonta africana',
          diet: 'Herbivore',
          habitat: 'Savanna, Forests',
        },
        {
          name: 'African Elephant',
          species: 'Loxodonta africana',
          diet: 'Herbivore',
          habitat: 'Savanna, Forests',
        },
      ],
      headers: [
        { title: 'Name', key: 'name' },
        { title: 'species', key: 'species' },
        { title: 'diet', key: 'diet' },
        { title: 'habitat', key: 'habitat' },
      ],
    }),
  }
</script>

字符串

相关问题