I have this v-data-table:
<v-data-table :headers="walletInHeaders" :items="filteredByQuantityIncome" >
<template v-slot:items="props">
<td >
<v-btn @click="loginAsClient(props.item.email)" color="blue">Login as client</v-btn>
{{ props.item.email }}
</td>
<td >{{ props.item.currency }}</td>
<td >{{ props.item.quantity }}</td>
<td >{{ props.item.totalIncomeAmount.toFixed(8) }}</td>
<td style="white-space: pre-line">{{ props.item.types }}</td>
</template>
</v-data-table>
And headers:
walletInHeaders: [
{text: 'Email (click on email to log in as client)', value: 'email', align: 'center', class: 'px-0', sortable: false},
{text: 'Currency', value: 'curr', align: 'center', class: 'px-0', sortable: false},
{text: 'Quantity', value: 'quan', align: 'center', class: 'px-0'},
{text: 'Total income amount', value: 'totalIncomeAmount', align: 'center', class: 'px-0', sortable: false},
{text: 'Payment methods', value: 'mostPopularPaymentMethod', align: 'center', class: 'px-0', sortable: false},
],
As you can see, there is a fiend quantity (it's integer in code), and I want to make table sort using this column. By default it doesn't work correctly at all. Not quantity field, not others.
I wrote, that this is integer column in code. Also, I was trying to use sortable: false and on other columns :sort-by="['quan]" :sort-desc="true" on table, but it still doesn't work.
CodePudding user response:
sort-by and sort-order fields are String and Boolean respectively. They are Arrays only if multi-sort is true.
If multi-sort is disabled: Try sort-by="quan" instead of :sort-by="['quan']".
If multi-sort is enabled: Try :sort-desc=[true] instead of :sort-desc="true".
CodePudding user response:
Actually, I should pay attention to value property in headers. As you can see, in HTML I have, for example, props.item.currency, but in headers {text: 'Currency', value: 'curr', align: 'center', class: 'px-0', sortable: false}. So, I just change curr value to currency, just like object's properties name. I did it for every property and now it works.
