防止在kendo网格的更改事件上重新加载数据源

时间:2018-06-13 11:20:55

标签: kendo-grid

我正在使用Kendo Grid,按下按钮,我调用一个函数来从db中使用新参数重新获取数据。

功能在这里

vm.refereshFigure = function (response) {
            vm.gridOptions = {
                datasource: new kendo.data.DataSource({
                    type: "odata",
                    transport: {
                        read: function (options) {
                            if (!!$scope.figure.figureId) {
                                gridService.runQuery(options, $scope.figure.figureId, response).then(function (responseData) {
                                    options.success(responseData.data);
                                });
                            }
                        }
                    },
                    schema: {
                        data: "Data",
                        total: "Total"
                    },
                    change: function (e) {
                        debugger;
                        e.preventDefault();
                    },
                    pageSize: vm.gridConfigurationJson.PageSize ? vm.gridConfigurationJson.PageSize : 10,
                    group: vm.JsonGroupingCloumns,
                    aggregate: vm.aggregatesList,
                    serverPaging: true,
                    serverSorting: true,
                    serverFiltering: true,
                    filter: !!vm.gridConfigurationJson.Filter
                        ? vm.gridConfigurationJson.Filter.filters
                        : vm.gridConfigurationJson.Filter,
                    page: vm.gridConfigurationJson.page,
                    sort: vm.gridConfigurationJson.sort

                }),
                dataBound: function (e) {
                    //if (vm.gridConfigurationJson.PageSize != e.sender.pager.dataSource._pageSize) {
                    //    saveGridConfigration(e);
                    //}
                },
                groupable: true,
                pageable: {
                    refresh: true,
                    pageSizes: [10, 25, 50, 100, 200, "All"],
                    buttonCount: 5,
                },
                noRecords: true,
                filterable: true,
                sortable: {
                    mode: "multiple",
                    allowUnsort: true,
                    showIndexes: true
                },
                resizable: true,
                reorderable: true,
                columnMenu: true,
                columns: vm.columnsList,

                toolbar: ["excel"],
                excel: {
                    allPages: true,
                    filterable: true,
                },
                excelExport: function (e) {
                    try {
                        var sheet = e.workbook.sheets[0];
                        for (var rowIndex = 1; rowIndex < sheet.rows.length; rowIndex++) {
                            var row = sheet.rows[rowIndex];
                            for (var cellIndex = 0; cellIndex < row.cells.length; cellIndex++) {
                                if (this.columns[cellIndex].type == 'date') {
                                    row.cells[cellIndex].format = "yy-MM-dd hh:mm:ss";
                                    row.cells[cellIndex].value =
                                        kendo.parseDate(row.cells[cellIndex].value, "yyyy-MM-ddTHH:mm:ss");
                                }
                            }
                        }
                    } catch (e) {

                    }

                    var filename = "";
                    if ($scope.figure.captionView != undefined) {
                        filename = $scope.figure.captionView;
                    } else if ($scope.figure.caption != undefined) {
                        filename = $scope.figure.caption;
                    }
                    e.workbook.fileName = filename + ".xlsx";
                },
            };
            $scope.filterChanged(response, undefined, $scope.figure.figureId);
        };

它称为web api两次。下面是read函数中执行两次的代码。

   if (!!$scope.figure.figureId) {
          gridService.runQuery(options, $scope.figure.figureId, response).then(function (responseData) {
            options.success(responseData.data);
     });
  }

首次通话后,会发生Change()事件,然后再次拨打read()

任何人都可以帮我解决我做错的事吗?

0 个答案:

没有答案