我已经配置了如下数据网格:
<script>
angular.module("KendoDemos", [ "kendo.directives" ]);
function MyCtrl($scope) {
$scope.mainGridOptions = {
dataSource: {
transport: {
read: {
url: "http://localhost:8090/rest/mycodeapi/Salesman?app_name=mycode&fields=FirstName%2C%20LastName&include_count=true",
dataType : 'jsonp',
type: 'GET',
beforeSend: function (req) {
req.setRequestHeader('Authorization', 'b3pilsnuhsppon2qmcmsf7uvj6')
}
},
parameterMap: function(data, type) {
if (type == "read") {
// send take as "$top" and skip as "$skip"
return {
order: data.sort[0]['field'] + ' ' + data.sort[0]['dir'],
limit: data.pageSize,
offset: data.skip
};
}
}
},
schema: {
data : 'record',
total: 'meta.count'
},
pageSize: 5,
serverPaging: true,
serverSorting: true,
sort: { field: "SalesmanID", dir: "asc" }
},
sortable: true,
pageable: true,
mobile: 'phone',
columns: [{
field: "FirstName",
title: "First Name"
},{
field: "LastName",
title: "Last Name"
}]
};
}
</script>
问题是:在第一次单击任意列时,说FirstName,它按升序排序,这很好。 在第二次单击时,它按降序排序:仍然是预期的行为。 然而,在第3次点击时,没有任何反应,控制台显示&#34; Uncaught TypeError:无法读取属性&#39;字段&#39;未定义&#34;。这意味着在第二次连续点击后,data.sort数组会发生某些事情。
不胜感激。
答案 0 :(得分:0)
第三次单击时,排序将被删除。您可以修改您的脚本,如下所示:
if (type == "read") {
var params = {
limit: data.pageSize,
offset: data.skip
};
if (data.sort && data.sort.length > 0)
params.order = data.sort[0]['field'] + ' ' + data.sort[0]['dir'];
return params;
}
答案 1 :(得分:0)
我知道这有点晚了,但我面临着同样的挑战,这就是我为解决问题所做的。
改变
sortable: true,
到
sortable: {
allowUnsort: false
},