【问题标题】:kendo datasource server paging and Total in jsonkendo 数据源服务器分页和 json 中的总计
【发布时间】:2013-01-22 06:15:17
【问题描述】:

对于我的 Kendo 数据源,结果 json 有一列“TotalRecords”,我如何将这个总数设置为 Kendo 数据源总数,以便我的服务器分页可以工作。我的代码如下:

 var iDataSource = new kendo.data.DataSource({
            transport: {
                read:
                    {
                        url: service_URL + "GetUnconfirmedppointments",
                        datatype: "json",
                        type: "GET"
                    },
                parameterMap: function (options) {
                    return {
                        appointmentNos: Appointment_Number.value,
                        loadNumbers: Load_Number.value,
                        purchaseOrders: Purchase_Orders.value,
                        dateFrom: Date_From.value,
                        dateTo: Date_To.value,
                        warehouse: warehouses.value,
                        carrierId: cr_carrier_id,
                        sortColum: getOrderBy(options.sort),
                        sortDirection: getOrderDir(options.sort),
                        pageSize: options.pageSize,
                        pageNumber: options.page
                    };
                }
            },
            schema: {
                model: {
                    fields: {
                        APP_APPOINTMENT_ID: { type: "number" },
                        APPOINTMENT_DATE: { type: "date" },
                        LO_LOAD_NUMBER: { type: "number" }
                    }
                }
            },
            pageSize: 5,
            total: function (response) {
               return response[0].TotalRecords;
            },
            serverPaging: true,
            serverFiltering: true,
            serverSorting: true
        });

当前实现不起作用,即使我提供了硬编码的总记录数,当此数据源绑定到网格时,总计数仅显示 json 中返回的记录数,即 pagesize。

【问题讨论】:

  • 基本上你的问题是你在schema之外定义了total而不是在里面。有关详细信息,请参阅 Burke Holland 的答案。

标签: jquery kendo-ui kendo-grid


【解决方案1】:

我假设您的总数在每条记录上?如果不是,你可以这样做......

schema: {
  total: "TotalRecords"
}

理想情况下,您的 JSON 应该是这样的结构......

{ data:[...], total: 100 }

但是,如果您不能像这样从服务器发送模式,您可以解析模式。如果总计数附加到每条记录,您可以添加一个字段来保存它并在解析中填充它。

schema: {
  parse: function(data) {
      // assign top level array to property
      data.data = data;
      // assign the count off one of the fields to a new total field
      data.total = data.data[0].TotalRecords;

      return data;
  }
}

【讨论】:

  • 谢谢@burkeholland,我的问题得到了解决。您的回复帮助我弄清楚出了什么问题。我只是将下面的内容移到架构中并修复了它。总计:函数(响应){返回响应[0].TotalRecords; }
【解决方案2】:

由于我的回复包含每条记录的总记录字段,因此我只是将以下内容移到架构中并修复了它。

total: function (response) { return response[0].TotalRecords; }

【讨论】:

    猜你喜欢
    • 2017-05-10
    • 2023-03-30
    • 2014-02-18
    • 2016-05-02
    • 2023-03-12
    • 2018-09-12
    • 2013-11-23
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多