KTDatatable(Metronic)中的服务器端分页

Server side pagination in KTDatatable (Metronic)

我是 Metronic 的 KTDatatable 新手。

我正在尝试在 Metronic 仪表板中使用服务器端分页,我正在解析 KTDatatable 中的数据,但我找不到解析从 [=27] 返回的数据的方法=] 并查看页数和每页 URL.

到目前为止我能写的代码是:

data: {
    type: 'remote',
    source: {
        read: {
            url: dataURL,
            method: 'GET',
            contentType: 'application/json',
            map: function(data) {
                var cards = data.cards.data;
                var currentPage = data.cards.current_page;
                var lastPage = data.cards.last_page;
                return cards;
            }
        },
    },
    pageSize: 10,
    serverPaging: true,
},

在这段代码中,我能够获得前十条记录,但是:

1- 我无法在 table.

中按照我想要的方式解析它们

2- 我无法显示页码,也无法为第二页或我想要的 (x) 页调用 API。

这些是我想做的事情。

提前致谢。

您可以返回 KT-Datatable 文档的末尾找到您想要的大部分答案KT-Datable documentation,但我会解释更多,希望它会更清楚。

所以来自 API (Json) 的 returned 值应该看起来有两个主要对象元和数据,它看起来像这样:

{
  "meta": {
    "sort": "desc",
    "field": "IssueName",
    "page": 1,
    "pages": 2,
    "perpage": "10",
    "total": 11
  },
  "data": [
    {
      "IssueName": "******",
      "CardNumber": "******"
    },
    {
      "IssueName": "******",
      "CardNumber": "******"
    }
  ]
}

并且在从 API 获取响应值后,您应该只 return 数据表要解析的数据对象,因此映射函数应该如下所示:

map: function(data) {
    return data.data;
}

它会自己处理元数据。

要将数据解析到列中,您应该使用与列定义数组中的数据相同的键名,因此在我的示例中我是这样使用的:

columns: [
    {
        field: 'IssueName',
        title: columnsTitles.issue,
        type: 'string',
    },
    {
        field: 'CardNumber',
        title: columnsTitles.card_number,
        type: 'string',
    },
]

每次数据表调用API它会发送更多的数据来帮助你给出正确的响应,数据将在一个数组的形状上(字段名称应该与钥匙):

[
    "pagination" => array:4 [
        "page" => "1"
        "pages" => "2"
        "perpage" => "10"
        "total" => "11"
    ],
    "sort" => array:2 [
        "field" => "IssueName"
        "sort" => "desc"
    ],
]

发送的数据与你要从API获取的分页和排序类型相关,你也可以添加过滤器,它们将存储在“查询”字段的数组中,并且你可以在后端处理它们。