How to call refresh() on a kendo-grid from an Angular controller?

前端 未结 3 1377
一整个雨季
一整个雨季 2020-12-18 05:20

I\'m attempting to follow several suggestions on refreshing a kendo-grid such as this.

The essential is that in the html I have:

相关标签:
3条回答
  • 2020-12-18 05:55

    Add id to the grid and trying refreshing using it.

    <div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions" id="grid1">
    

    In controller use this:

    $("#grid1").data('kendoGrid').refresh();

    0 讨论(0)
  • 2020-12-18 06:17

    Found the answer. One other method of refreshing the datasource I read about was to do something like:

    vm.mainGridOptions.datasource.transport.read();
    

    This wasn't working for me as "read" was undefined. Looking at my datasource definition, I saw the reason, read needs a parameter (in this case "e"):

        vm.mainGridOptions = {
            dataSource: {
                transport: {
                    read: function (e) {
                        task.getAllTasks(vm.appContext.current.contextSetting).
                            then(function (data) {
                                e.success(data);
                            });
                    },
                }
            },
    

    To solve, I saved "e" in my scope and then reused it when I wanted to refresh:

        vm.mainGridOptions = {
            dataSource: {
                transport: {
                    read: function (e) {
                        task.getAllTasks(vm.appContext.current.contextSetting).
                            then(function (data) {
                                e.success(data);
                                vm.optionCallback = e;
                            });
                    },
                }
            },
    

    and then:

    if (vm.optionCallback !== undefined) {
       vm.mainGridOptions.dataSource.transport.read(vm.optionCallback);
    }
    

    Problem solved (I hope).

    0 讨论(0)
  • 2020-12-18 06:17

    it's because you are using the options object to trigger the read, you should use the grid reference instead:

    <div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions">
    

    as in:

    $scope.vm.webapiGrid.dataSource.transport.read();
    

    hope that helps.

    0 讨论(0)
提交回复
热议问题