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

…衆ロ難τιáo~ 提交于 2019-11-29 07:23:00

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

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.

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();

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!