Массив data.sort карты параметров DataSource KendoUI Grid становится неопределенным при щелчке 3-го столбца сортировки

У меня есть сетка данных, настроенная следующим образом:

<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>

Проблема в том, что при 1-м щелчке любого столбца, скажем, FirstName, он сортируется по возрастанию, что нормально. При втором щелчке он сортируется по убыванию: все еще ожидаемое поведение. Однако при третьем щелчке ничего не происходит, и консоль показывает «Uncaught TypeError: Cannot read property 'field' of undefined». Это означает, что что-то происходит с массивом data.sort после второго клика подряд.

Был бы признателен за любые указатели.


person user1729972    schedule 17.11.2014    source источник


Ответы (2)


По третьему клику сортировка снимается. Вы можете изменить свой скрипт следующим образом:

 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;

 }
person idursun    schedule 08.01.2015

Я знаю, что это немного поздно, но я столкнулся с той же проблемой, и это то, что я сделал, чтобы решить эту проблему.

Сдача

sortable: true,

to

sortable: {
    allowUnsort: false
},
person user14290663    schedule 11.01.2021