Personnalisation avancée des tableaux Ant Design Vue dans Vue2

Lors de la définition des colonnes, évitez d'utiliser la propriété title. À la place, intégrez l'option slots: { title: 'titrePersonnalise' }, où 'titrePersonnalise' est un identifiant arbitriare.

Insérez ensuite un template correspondant dans votre code :

// L'identifiant du slot doit coïncider avec celui défini dans les slots
<template slot="titrePersonnalise">
 Intitulé de la colonne
 <a-icon type="star-o" /> <!-- Élément personnalisé -->
</template>

2. Configuration du tri sans annulation

Pour supprimer l'optoin d'annulation du tri dans la configuration des colonnes, spécifiez :

// Paramètres de colonne
sortDirections: ['descend', 'ascend', 'descend']

3. Réinitialisation complète de l'état de tri

Pour gérer et effacer l'ensemble des tris actifs, suivez cette implémentation :

// Partie template
<a-table
 :columns="colonnes"
 @change="gererChangementTri"
/>

// Partie logique
computed: {
 colonnes() {
   const { infoTri } = this;
   const etatTri = infoTri || {};
   return [
     {
       cle: 'alpha',
       dataIndex: 'alpha',
       title: 'Pertinence sectorielle',
       sorter: true,
       sortDirections: ['descend', 'ascend'],
       sortOrder: etatTri.columnKey === 'alpha' && etatTri.order
     },
     {
       cle: 'beta',
       dataIndex: 'valeurSuper',
       slots: { title: 'enTeteCustom' },
       scopedSlots: { customRender: 'beta' },
       sorter: true,
       sortDirections: ['descend', 'ascend'],
       sortOrder: etatTri.columnKey === 'beta' && etatTri.order
     }
   ];
 }
},
data() {
 return {
   infoTri: null
 };
},
methods: {
 gererChangementTri(pagination, _, trieur) {
   this.infoTri = trieur;
 }
}

// Pour effacer les tris, réinitialisez l'état, par exemple lors d'un changement d'onglet :
this.infoTri = null;

4. Rendu dynamique avec colonnes opérationnelles

Construisez un tableau avec des colonnes générées dynamiquement et des actions personnalisées :

// Structure du composant
<a-table
 :columns="colonnesConfig"
 :data-source="sourceDonnees"
 :pagination="false"
 :scroll="{ x: 0, y: 222 }"
>
 <template #nom="{ text }">{{ text.prenom }} {{ text.nom }}</template>
 <template #celluleCorps="{ column, record }">
   <template v-if="column.cle === 'actions'">
     <div style="display: flex; gap: 8px;">
       <button class="action-btn">Exécuter</button>
       <button class="action-btn">Modifier</button>
       <button class="action-btn">Supprimer</button>
     </div>
   </template>
 </template>
</a-table>

// Données et configuration
const sourceDonnees = [
 { nom: { prenom: 'Jean', nom: 'Dupont' } },
 { nom: { prenom: 'Marie', nom: 'Curie' } }
];
const colonnesConfig = [
 {
   title: 'Identité',
   dataIndex: 'nom',
   cle: 'nom',
   ellipsis: true
 },
 {
   title: 'Opérations',
   dataIndex: 'actions',
   cle: 'actions'
 }
];

5. Pagination personnalisée avec slots (version 3.3.0+)

Adaptez l'affichage des options de pagination en utilisant le slot buildOptionText :

<a-pagination
 class="pagination"
 show-size-changer
 v-model:current="pageActuelle"
 v-model:pageSize="taillePage"
 :total="totalElements"
 @showSizeChange="surChangementTaille"
 @change="gererChangementPage"
>
 <template #buildOptionText="props">
   <span>{{ props.value }} éléments/page</span>
 </template>
</a-pagination>

Étiquettes: Vue2 Ant Design Vue tableaux personnalisation tri

Publié le 20 juin à 03h22