I have these vuetify table, this is how I configure the header
headers: [
{
text: 'Name',
align: 'start',
sortable: false,
value: 'name',
width: '20%'
},
{ text: 'Link Count', value: 'count', width: '10%', sortable: true },
{ text: 'URL', value: 'details', width: '50%' },
{ text: 'Actions', value: 'id', width: '20%' }
]
<v-data-table :headers="headers" :items="items" :search="search">
...
<template v-slot:item.count="{ item }">
{{ item.details.length }}
</template>
...
As you can see I have sortable: true for Link Count column.
Some how it is not working…
How can I debug this further ?
Advertisement
Answer
By default, <v-data-table> comes with a sortable functionality for all the columns. By your question what I understood if that by default you want count column sorted in ascending/descending order when grid loads.
If Yes, You can achieve that by using external-sorting feature of data grid.
Working demo :
new Vue({
el: '#app',
vuetify: new Vuetify(),
data () {
return {
sortBy: 'count',
sortDesc: false,
headers: [
{
text: 'Name',
align: 'start',
value: 'name',
width: '20%'
},
{ text: 'Link Count', value: 'count', width: '10%' },
{ text: 'URL', value: 'details', width: '50%' },
{ text: 'Actions', value: 'id', width: '20%' }
],
items: [
{
name: 'Frozen Yogurt',
count: 159,
details: 'Detail 1',
id: 24
},
{
name: 'Ice cream sandwich',
count: 237,
details: 'Detail 2',
id: 37
},
{
name: 'Eclair',
count: 262,
details: 'Detail 3',
id: 23
},
{
name: 'Cupcake',
count: 305,
details: 'Detail 4',
id: 67
}
],
}
}
})<script src="https://unpkg.com/vue@2.x/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify@2.6.4/dist/vuetify.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/vuetify@2.6.4/dist/vuetify.min.css"/>
<link rel="stylesheet" href="https://unpkg.com/@mdi/font@6.x/css/materialdesignicons.min.css"/>
<div id="app">
<v-app id="inspire">
<div>
<v-data-table
:headers="headers"
:items="items"
:sort-by.sync="sortBy"
:sort-desc.sync="sortDesc"
class="elevation-1"
></v-data-table>
</div>
</div>
</v-app>
</div>Please let me know if my understanding is not correct or any further changes required as per the requirement.
