How to call refresh() on a kendo-grid from an Angular controller?
Solution 1
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).
Solution 2
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.
Michael Witt
I have been developing software since 1985.: DEC Vax - C Programming - Ingres Database Unix (AIX/Ultrix/SCO) - 4GL programming - Informix Database Windows NT - C++ programming - Oracle Database Windows 2003 - Visual Basic and ASP programming - Oracle Database Windows 2008 - C# Winforms and ASP.NET programming, Silverlight and WCF - SQL Server DB Windows 2008R2 - ASP.NET MVC, WCF - SQL Server DB Front End - AngularJS, Bootstrap, TypeScript, Angular Quite a ride...
Updated on June 05, 2022Comments
-
Michael Witt about 2 years
I'm attempting to follow several suggestions on refreshing a kendo-grid such as this.
The essential is that in the html I have:
<div kendo-grid="vm.webapiGrid" options="vm.mainGridOptions">
Then in the controller I have:
vm.webapiGrid.refresh();
Note: I'm using the ControllerAs syntax so I am using "vm" rather than $scope.
My problem is that "vm.webapiGrid" is undefined. This seems so straightforward, but I'm not sure why it is undefined.
-
Michael Witt over 9 yearsThat starts to get me there (although I'd probably get my fingers chopped off for using a jquery selector). Problem is that the refresh function is expecting an event. If I evaluate, I see: function (e) { var that = this, length,.....
-
Kayvan Karim about 9 yearsstackoverflow.com/questions/18399805/… This asnwer also will help
-
snowYetis about 8 yearsThis tastes more like JQuery. It is a bad practice to use JQuery in an Angular application. So, instead of #grid1 it should be "scope" or "this"