2015-02-04 10 views
5

Ich versuche, mehrere Vorschläge zum Aktualisieren eines Kendo-Grids wie this zu folgen.Wie wird refresh() auf einem Kendo-Gitter von einem Angular Controller aufgerufen?

Das Wesentliche ist, dass in den HTML-Code ich habe:

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

Dann im Controller ich habe:

vm.webapiGrid.refresh(); 

Hinweis: Ich verwende die ControllerAs Syntax so verwende ich „vm "anstatt $ Scope.

Mein Problem ist, dass "vm.webapiGrid" nicht definiert ist. Das scheint so einfach, aber ich bin mir nicht sicher, warum es nicht definiert ist.

Antwort

9

Die Antwort gefunden. Ein anderes Verfahren zum Auffrischen der Datenquelle Ich las über war wie etwas zu tun:

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

Dies war nicht für mich arbeiten als „gelesen“ wurde nicht definiert. Ein Blick auf meine Datenquelle Definition, sah ich den Grund, lesen Sie einen Parameter benötigt (in diesem Fall „e“):

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

zu lösen, ich „e“ in meinem Umfang gespeichert und dann wieder verwendet, wenn ich wollte auffrischen:

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

und dann:

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

Problem gelöst (hoffe ich).

-3

Fügen Sie dem Grid eine ID hinzu und versuchen Sie, es zu aktualisieren.

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

In Controller verwenden diese:..

$ ("# grid1") Daten ('kendoGrid') refresh();

+0

Das fängt an, mich dorthin zu bringen (obwohl ich wahrscheinlich meine Finger für einen jquery-Selektor abgehackt bekommen würde). Problem ist, dass die Refresh-Funktion ein Ereignis erwartet. Wenn ich auswerte, sehe ich: Funktion (e) { var das = das, Länge, ..... –

+0

können Sie jsfiddle mit Ihrem Code erstellen .. .dat wäre einfach, das Problem zu .. – Andrea

+0

http://stackoverflow.com/questions/18399805/reloading-refreshing-kendo-grid Diese Hilfe wird auch helfen –

3

es ist, weil Sie die Optionen verwenden Objekt die Lese auszulösen, sollten Sie die Raster Referenz verwenden statt:

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

wie in:

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

Hoffnung, das hilft.

Verwandte Themen