对于我的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: "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;
}
}
由于我的响应中每个记录都有总记录字段,因此我只将下面的内容移到了模式中,它就修复了它。
total: function (response) { return response[0].TotalRecords; }