【问题标题】:How to sort column in Vuetify datatable?如何对 Vuetify 数据表中的列进行排序?
【发布时间】:2020-11-13 17:00:18
【问题描述】:

我有一个带有服务器端数据的 Vuetify Datatable 组件。我想用我当前显示的内容对客户端的数据进行排序。但是当我单击该列进行排序时,它不会做任何事情。该列包含字符串值。

以下是我的数据表:

<v-data-table
    :page="page"
    :pageCount="numberOfPages"
    :headers="headers"     
    :items="services"
    :options.sync="options"
    :server-items-length="totalElements"
    :loading="loading"    
     :custom-filter="filterOnlyCapsText"
    class="elevation-1"
    @update:page="updatePagination"    
    :items-per-page="itemsPerPage"
    @update:items-per-page="setItemsPerPage"   
  >

我的 Vuejs 代码:

 data() {
    return {
      headers: [
        {
          text: "Service",
          value: "name",
          sortable: true,
        },
        {
          text: "Application",
          value: "application.name",
        },
        {
          text: "Description",
          value: "description",
        },
        {
          text: "Endpoint",
          value: "endpoint",
        },
        {
          text: "Environment",
          value: "environmentList",
        },
      ],
      page: 1,
      totalElements: 0,
      numberOfPages: 0,
      services: [],
      loading: true,
      options: {},
      itemsPerPage: 0,
      search: "",
    };
  },

  options: {
    handler() {
      console.log("handler got called");
    },
    deep: true,
  },

我不确定要在客户端对列进行排序需要什么。有没有我需要挂钩的听众?

谢谢

【问题讨论】:

  • 你能分享一个工作的例子吗?

标签: vue.js vuetify.js


【解决方案1】:

您使用服务器端分页,需要在事件发生时通过适当的 API 调用来实现此功能

update:page, update:sortBy, update:options

发射。

这是正确的行为,因为通常您需要对整个数据集进行排序,而不是对当前页面进行排序。

启用服务器端行为的选项: 服务器项长度

定义这个道具将禁用内置的排序和分页。

【讨论】:

  • 你的答案是完全正确的,我让它像这样工作,但在某些情况下,我想对客户端唯一可用的记录进行排序,例如:添加新记录,我将数据发送到服务器,但我也想将其注入表中的正确位置,或者如果在等待服务器响应之前从表中删除记录时删除期间出现错误,我可能需要再次注入它在它的位置上......如果它在数据更改后也能在客户端自动排序,那就太好了......
猜你喜欢
  • 2021-06-16
  • 2020-09-13
  • 2012-06-07
  • 2012-04-15
  • 2013-12-03
  • 2019-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多