Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 列上的剑道网格分组-类型错误:无法读取属性';长度';未定义的_Javascript_Kendo Ui_Kendo Grid - Fatal编程技术网

Javascript 列上的剑道网格分组-类型错误:无法读取属性';长度';未定义的

Javascript 列上的剑道网格分组-类型错误:无法读取属性';长度';未定义的,javascript,kendo-ui,kendo-grid,Javascript,Kendo Ui,Kendo Grid,我对剑道网格中的数据分组有问题 我拖动我想用于组的列,我总是得到以下错误 TypeError: Cannot read property 'length' of undefined 我试图找到错误的触发点,但运气不好 从服务器返回分组数据 非常感谢你的建议 网格初始化代码: $scope.initGrid = function() { console.log("init locations grid"); // set container for loading

我对剑道网格中的数据分组有问题

我拖动我想用于组的列,我总是得到以下错误

 TypeError: Cannot read property 'length' of undefined
我试图找到错误的触发点,但运气不好

从服务器返回分组数据

非常感谢你的建议

网格初始化代码:

$scope.initGrid = function() {

      console.log("init locations grid");
        // set container for loading spinner
        gridView = $("#locations_grid");
        // set all properties for data grid
        gridView.kendoGrid({
            dataSource: {
                transport: {
                    // READ REQUEST
                    read: function (options) {
                        console.log("List");
                        console.log(options.data);
                        requestParams = {
                            "entityName": "Location"
                        };
                        requestParams.data = options.data;

                        console.log(requestParams);
                        ApiService.doHttpRequest(
                                "POST",
                                $rootScope.apiBaseUrl + "location/search",
                                requestParams
                        )
                        .success(function (data, status, headers, config) {
                            // successful data retrieval
                            console.log("request success, checking state");
                            console.log(data);
                            // sent status to global HTTP status service
                            var jsonResponse =  ApiService.processReturnedHttpState(status);
                            console.log("Status response is " + jsonResponse.result);
                            // do something with data
                            switch (jsonResponse.result) {
                                case true:
                                    options.success(data);
                                    break;
                                case false:
                                    growlNotifications.add($translate.instant('LIST_LOADING_ERROR'), 'error',  $rootScope.notificationLifetime);
                                    break;
                            }
                        })
                        .error(function (data, status, headers, config) {
                            var jsonResponse =  ApiService.processReturnedHttpState(status);
                            console.log("Processing error with status " +status);
                            growlNotifications.add($translate.instant('PROCESSING_REQUEST_ERROR') + jsonResponse.message , 'error',  $rootScope.notificationLifetime);
                            // hide loading spinner
                            kendo.ui.progress(gridView, false);
                        });
                    },
                    // DELETE FUNCTION
                    destroy: function (options) {
                        console.log("delete");
                        console.log(options.data);
                        // add data to request params
                        console.log("delete id: " +options.data.id);
                        // call the service
                        ApiService.doHttpRequest(
                            "POST",
                            $rootScope.apiBaseUrl + "/location/delete",
                            requestParams)
                            .success(function (data, status, headers, config) {
                                // successful data retrieval
                                console.log("request success, checking state");
                                console.log(data);
                                // sent status to global HTTP status service
                                var jsonResponse =  ApiService.processReturnedHttpState(status);
                                console.log("Status response is " + jsonResponse.result);
                                // do something with data
                                switch (jsonResponse.result) {
                                    case true:
                                        options.success(data);
                                        break;
                                    case false:
                                        growlNotifications.add($translate.instant('LIST_LOADING_ERROR'), 'error',  $rootScope.notificationLifetime);
                                        break;
                                }
                            })
                            .error(function (data, status, headers, config) {
                                var jsonResponse =  ApiService.processReturnedHttpState(status);
                                console.log("Processing error with status " +status);
                                growlNotifications.add($translate.instant('PROCESSING_REQUEST_ERROR') + jsonResponse.message , 'error',  $rootScope.notificationLifetime);
                                // hide loading spinner
                                kendo.ui.progress(gridView, false);
                            });
                    },
                    // CREATE FUNCTION
                    create: function (options) {
                        console.log("Create");
                        console.log(options.data);
                        // ADD DATA FOR UPDATE TO THE TOKEN
                        requestParams = options.data;
                        ApiService.doHttpRequest(
                            "POST",
                            $rootScope.apiBaseUrl + "location/create",
                            requestParams
                        )
                            .success(function (data, status, headers, config) {
                                // successful data retrieval
                                console.log("request success, checking state");
                                console.log(data);
                                // sent status to global HTTP status service
                                var jsonResponse =  ApiService.processReturnedHttpState(status);
                                console.log("Status response is " + jsonResponse.result);
                                // do something with data
                                switch (jsonResponse.result) {
                                    case true:
                                        options.success(data);
                                        var dataSource = gridView.dataSource;
                                        gridView.data('kendoGrid').dataSource.read();
                                        growlNotifications.add($translate.instant('SUCCESSFULLY_ADDED'), 'success',  $rootScope.notificationLifetime);
                                        break;
                                    case false:
                                        growlNotifications.add($translate.instant('PROCESSING_ERROR'), 'error',  $rootScope.notificationLifetime);
                                        options.success(data);
                                        break;
                                }

                            })
                            .error(function (data, status, headers, config) {
                                var jsonResponse =  ApiService.processReturnedHttpState(status);
                                console.log("Processing error with status " +status);
                                growlNotifications.add($translate.instant('PROCESSING_REQUEST_ERROR') + jsonResponse.message , 'error',  $rootScope.notificationLifetime);
                                // hide loading spinner
                                kendo.ui.progress(gridView, false);
                            });
                    }
                },
                requestStart: function(e) {
                    console.log("Request start");


                },
                requestEnd: function(e) {
                  console.log("Request end");

                  // hide loading spinner
                  kendo.ui.progress(gridView, false);

                },
                requestError: function(e) {
                    console.log("Request error");
                    // hide loading spinner
                    kendo.ui.progress(gridView, false);
                },
                // SCHEMA FOR DATAGRID
                schema: {
                    model: {
                        id: "id",
                        fields: {
                            id: {
                                editable: false,
                                nullable: true,
                                defaultValue: null,
                                type: "number"
                            },
                            accessNote: {
                                editable: false,
                                nullable: true,
                                type: "string"
                            },
                            address: {
                                editable: false,
                                defaultValue: {},
                                nullable: true
                            },
                            bsc: {
                                editable: false,
                                nullable: true
                            },
                            code:{
                                editable: false,
                                nullable: true,
                                type: "string",
                                validation: {
                                    required: true,
                                    min: 1
                                }
                            },
                            indoorOutdoor:{
                                editable: false,
                                nullable: true,
                                type: "string",
                                validation: {
                                    required: {
                                        message: $translate.instant('FIELD_IS_REQUIRED')
                                    }
                                }
                            },
                            siteId:{
                                editable: false,
                                nullable: true,
                                type: "string",
                                validation: {
                                    required: {
                                        message: $translate.instant('FIELD_IS_REQUIRED')
                                    }
                                }
                            },
                            shared: {
                              editable: false,
                              nullable: true,
                              type: "boolean"
                            },
                            partner: {
                              nullable: true,
                              editable: false,
                              defaultValue: {},
                            },
                            stationType:{
                                nullable: true,
                                editable: false,
                                defaultValue: {},

                            },
                            abloyLocation:{
                                editable: false,
                                type: "string",
                                defaultValue: ""
                            },
                            sapSacIrnCode:{
                              editable: false,
                              type: "string",
                              defaultValue: ""
                            }
                        }
                    },
                    data: function(response) {
                        console.log(response.results);
                        if (response.results.length == 0) {
                          return [];
                        }
                        return response.results;
                    },
                    total: function(response) {
                        console.log(response.resultCount);
                        return response.resultCount;
                    }
                },
                // definition for page sorting
                pageSize : GridHelperService.setDefaultPageSize(),
                serverPaging: true,
                serverFiltering: true,
                serverSorting: true,
                serverGrouping: true
            },
            editable:{
                confirmation:true //remove delete confirm message
            },
            scrollable:true,
            //window resizing hack
            height: function () {
               return GlobalHelperService.getWindowSize();
            },
            filterable: GridHelperService.filtersTranlations(),
            sortable: true,
            groupable : {
                messages: {
                    empty : $translate.instant('DRAG_SELECTED_COLUMN_HEADER_HERE_TO_GROUP')
                }
            },
            reorderable: true,
            resizable: true,
            //dataBound: resizeGrid, //callback when data are loaded
            columnMenu: GridHelperService.getColumnMenu(),
            pageable: GridHelperService.getBottomToolbar(),
            messages:GridHelperService.getToolbarButtonsTranlations(),
            toolbar: [
                { name: "create" },
                { template: kendo.template($("#template").html()) },
            ],
            columns: [
                {
                    field :"partner.name",
                    editable: false,
                    title : $translate.instant('PARTNER'),
                    width: 250,
                    template: function(data) {
                      console.log("Data are");
                      try {
                        if(data.partner.name === null) {
                          console.log("Partner is null");
                          return "";
                        } else {
                          return data.partner.name;
                        }
                      } catch (e){
                        return "";
                      }

                    },
                    filterable: {
                        cell: {
                            operator: "contains"
                        }
                    }
                },
                {
                    field :"accessNote",
                    title : $translate.instant('ACCESS_NOTE'),
                    width: 250,
                    filterable: {
                        cell: {
                            operator: "contains"
                        }
                    }
                },
                {
                  field :"abloyLocation",
                  title : $translate.instant('ABBLOY_LOCATION'),
                  width: 250,
                  filterable: {
                    cell: {
                      operator: "contains"
                    }
                  }
                },
                {
                    field :"address.city",
                    title : $translate.instant('ADDRESS_CITY'),
                    width: 250,
                    template: function(data) {
                      console.log("Data are");
                      try {
                        if(data.address.city === null) {
                          console.log("Is null");
                          return "";
                        } else {
                          return data.address.city;
                        }
                      } catch (e){
                        return "";
                      }

                    },
                    filterable: {
                        cell: {
                            operator: "contains"
                        }
                    }
                },
                {
                    field :"address.latitude",
                    title : $translate.instant('ADDRESS_LAT'),
                    width: 250,
                    template: function(dataItem) {
                      console.log("ADDRESS_LON IS FOLLOWING:");
                      try {
                        console.log(dataItem.address.latitude);
                        if(dataItem.address.latitude === null) {
                          return "";
                        } else {
                          console.log("TRYING TO GET LENGTH");
                          var stringLon = dataItem.address.latitude.toString();
                          var lengthOfString = stringLon.toString().length;
                          console.log("LENGTH IS:");
                          console.log(lengthOfString);
                          if(lengthOfString >= 5) {
                            console.log("IS LONG");
                            var trimmedString = stringLon.substring(0, 5);
                            console.log("TRIMMED STRING");
                            console.log(trimmedString);
                            return trimmedString;
                          }
                          else {
                            console.log("IS SHORT");
                            return stringLon;
                          }
                        }
                      } catch (e){
                        console.log("EXC ADDRESS_LAT");
                        return "";
                      }

                    },
                    filterable: {
                        cell: {
                            operator: "eq"
                        }
                    }
                },
                {
                    field :"address.longitude",
                    title : $translate.instant('ADDRESS_LON'),
                    width: 250,
                    template: function(dataItem) {
                      try{
                        if(dataItem.address.longitude === null) {
                          return "";
                        } else {
                          console.log("TRYING TO GET LENGTH");
                          var stringLon = dataItem.address.longitude.toString();
                          var lengthOfString = stringLon.toString().length;
                          console.log("LENGTH IS:");
                          console.log(lengthOfString);
                          if(lengthOfString >= 5) {
                            console.log("IS LONG");
                            var trimmedString = stringLon.substring(0, 5);
                            console.log("TRIMMED STRING");
                            console.log(trimmedString);
                            var html = "<div>"+trimmedString+"<a class=\"showOnMapBtn\" href=\"http://maps.google.com/maps?q="+dataItem.address.latitude+","+dataItem.address.longitude+"&z=14&ll="+dataItem.address.latitude+","+dataItem.address.longitude+"\" target=\"blank\">"+$translate.instant('MAP')+"</a></div>";
                            return html;
                          }
                          else {
                            console.log("IS SHORT");
                            var html = "<div>"+stringLon+"<a class=\"showOnMapBtn\" href=\"http://maps.google.com/maps?q="+dataItem.address.latitude+","+dataItem.address.longitude+"&z=14&ll="+dataItem.address.latitude+","+dataItem.address.longitude+"\" target=\"blank\">"+$translate.instant('MAP')+"</a></div>";
                            return html;
                          }
                          console.log("ADDRESS_LON IS FOLLOWING:");
                          console.log(dataItem.address.longitude);
                        }
                      } catch(e) {
                        console.log("EXC ADDRESS_LON");
                        return "";
                      }
                        },
                    filterable: {
                        cell: {
                            operator: "eq"
                        }
                    }

                },
                {
                    field :"address.street",
                    title : $translate.instant('ADDRESS_STREET'),
                    width: 250,
                    editor: GlobalHelperService.getAddressStreetListForAutocomplete,
                    template: function(dataItem) {
                      try{
                        if(dataItem.address.street === null) {
                          return "";
                        } else {
                          return dataItem.address.street;
                        }
                      } catch(e) {
                        return "";
                      }
                    },
                    filterable: {
                        cell: {
                            operator: "contains"
                        }
                    }
                },
                {
                  field :"address.district",
                  title : $translate.instant('ADDRESS_DISTRICT'),
                  template: function(dataItem) {
                    try{
                      if(dataItem.address.district === null) {
                        return "";
                      } else {
                        return dataItem.address.district;
                      }
                    } catch(e) {
                      return "";
                    }
                  },
                  width: 250,
                  filterable: {
                    cell: {
                      operator: "contains"
                    }
                  }
                },
                {
                  field :"address.streetNumber",
                  title : $translate.instant('ADDRESS_STREET_NUMBER'),
                  template: function(dataItem) {
                    try{
                      if(dataItem.address.streetNumber === null) {
                        return "";
                      } else {
                        return dataItem.address.streetNumber;
                      }
                    } catch(e) {
                      return "";
                    }
                  },
                  width: 250,
                  filterable: {
                    cell: {
                      operator: "contains"
                    }
                  }
                },
                {
                    field :"bsc",
                    title : $translate.instant('BSC'),
                    width: 250,
                    filterable: {
                        cell: {
                            operator: "contains"
                        }
                    }
                },
                {
                    field :"code",
                    title : $translate.instant('CODE'),
                    width: 250,
                    filterable: {
                        cell: {
                            operator: "contains"
                        }
                    }
                },
                {
                    field :"indoorOutdoor",
                    title : $translate.instant('INDOOR_OUTDOOR'),
                    editor: GlobalHelperService.locationTypeDropDownEditor,
                    template: function(dataItem) {
                        switch (dataItem.indoorOutdoor)
                        {
                            case "Indoor":
                                return "Indoor";
                            case "Outdoor":
                                return "Outdoor";
                            case "IndoorOutdoor":
                                return "Indoor & Outdoor";
                            default:
                                return "Neuvedeno";
                        }
                    },
                    width: 250,
                    filterable: {
                        cell: {
                            operator: "contains"
                        }
                    }
                },
                {
                    field :"siteId",
                    title : $translate.instant('SITE_ID'),
                    width: 250,
                    filterable: {
                        cell: {
                            operator: "contains"
                        }
                    }
                },
                {
                  field :"sapSacIrnCode",
                  title : $translate.instant('SAPSACIRNCODE'),
                  width: 250,
                  filterable: {
                    cell: {
                      operator: "contains"
                    }
                  }
                },
                {
                    field :"stationType.name",
                    title : $translate.instant('STATION_TYPE'),
                    editor: GlobalHelperService.getStationTypeListForAutocomplete,
                    template: function(data) {
                     try{
                        console.log("Data are");
                        console.log(data.stationType.name);
                        if (data.stationType.name === null) {
                          return "";
                        } else {
                          return data.stationType.name;
                        }
                      }
                      catch(e) {
                        return "";
                      }
                    },
                    width: 250,
                    filterable: {
                        cell: {
                            operator: "contains"
                        }
                    }
                },
                {
                  command:
                    [
                      {
                        name: "detail",
                        click: function(e) {
                          var clickedRow = this.dataItem($(e.currentTarget).closest("tr"));
                          var workerId = clickedRow.id;
                          GlobalHelperService.redirectTo("/locations/detail/"+workerId);
                          return false;
                        }
                      }
                    ],

                  title: $translate.instant('ACTIONS'),
                  width: 90,
                  filterable: {
                    cell: {
                      operator: "contains"
                    }
                  },
                  locked: true,
                  lockable: true
                }
            ]
        });

        // HACK FOR ADD NEW RECORD BUTTON CLICK HANDLED BY ANGULAR JS
        $('.k-header').on('click', '.k-grid-add', function(e) {
          e.preventDefault();
          GlobalHelperService.redirectTo("/locations/create");
          return false;
        });
    };
$scope.initGrid=function(){
日志(“初始位置网格”);
//设置用于装载微调器的容器
gridView=$(“#位置#网格”);
//设置数据网格的所有属性
gridView.kendoGrid({
数据源:{
运输:{
//阅读请求
阅读:功能(选项){
控制台日志(“列表”);
console.log(options.data);
requestParams={
“entityName”:“位置”
};
requestParams.data=options.data;
console.log(requestParams);
ApiService.doHttpRequest(
“职位”,
$rootScope.apiBaseUrl+“位置/搜索”,
请求参数
)
.success(函数(数据、状态、标题、配置){
//成功的数据检索
log(“请求成功,检查状态”);
控制台日志(数据);
//已将状态发送到全局HTTP状态服务
var jsonResponse=ApiService.processReturnedHttpState(状态);
log(“状态响应为”+jsonResponse.result);
//处理数据
开关(jsonResponse.result){
大小写正确:
选项。成功(数据);
打破
案例错误:
growlNotifications.add($translate.instant('LIST\u LOADING\u ERROR')、'ERROR'、$rootScope.notificationLifetime);
打破
}
})
.error(函数(数据、状态、标题、配置){
var jsonResponse=ApiService.processReturnedHttpState(状态);
console.log(“状态为“+状态的处理错误”);
growlNotifications.add($translate.instant('PROCESSING\u REQUEST\u ERROR')+jsonResponse.message,'ERROR',$rootScope.notificationlife);
//隐藏加载微调器
kendo.ui.progress(gridView,false);
});
},
//删除函数
销毁:功能(选项){
控制台日志(“删除”);
console.log(options.data);
//将数据添加到请求参数
log(“删除id:+options.data.id”);
//呼叫服务
ApiService.doHttpRequest(
“职位”,
$rootScope.apiBaseUrl+“/location/delete”,
请求参数)
.success(函数(数据、状态、标题、配置){
//成功的数据检索
log(“请求成功,检查状态”);
控制台日志(数据);
//已将状态发送到全局HTTP状态服务
var jsonResponse=ApiService.processReturnedHttpState(状态);
log(“状态响应为”+jsonResponse.result);
//处理数据
开关(jsonResponse.result){
大小写正确:
选项。成功(数据);
打破
案例错误:
growlNotifications.add($translate.instant('LIST\u LOADING\u ERROR')、'ERROR'、$rootScope.notificationLifetime);
打破
}
})
.error(函数(数据、状态、标题、配置){
var jsonResponse=ApiService.processReturnedHttpState(状态);
console.log(“状态为“+状态的处理错误”);
growlNotifications.add($translate.instant('PROCESSING\u REQUEST\u ERROR')+jsonResponse.message,'ERROR',$rootScope.notificationlife);
//隐藏加载微调器
kendo.ui.progress(gridView,false);
});
},
//创建函数
创建:函数(选项){
console.log(“创建”);
console.log(options.data);
//将要更新的数据添加到令牌
requestParams=options.data;
ApiService.doHttpRequest(
“职位”,
$rootScope.apiBaseUrl+“位置/创建”,
请求参数
)
.success(函数(数据、状态、标题、配置){
//成功的数据检索
console.log(“r
kendo.web.min.js
kendo.dataviz.min.js
Object.n.trigger.n.online.n.transport.read.success
Object.ht.extend.read.n._queueRequest.n.trigger.n.online.n.transport.read.success