KendoUI Grid'DataSource parametermap的data.sort数组在第3列排序单击时变为未定义

时间:2014-11-17 17:25:40

标签: angularjs kendo-ui kendo-grid kendo-datasource

我已经配置了如下数据网格:

<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数组会发生某些事情。

不胜感激。

2 个答案:

答案 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
},