2015-01-01 3 views
5

Ich arbeite auf UI Grid bearbeiten Zelle Funktion. Ich muss den bearbeiteten Zellenwert mit Rest API in die Datenbank aktualisieren. Wie kann ich auch die Liste der im Controller ausgewählten Zeilen abrufen?UI-Grid speichern aktualisierte Zellendaten in die Datenbank

Mein Arbeits Code

var app = angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.edit']); 

    app.controller('MainCtrl', ['$scope', '$http', function ($scope, $http) { 
     $scope.gridOptions = { }; 

     $scope.gridOptions.columnDefs = [ 
     { name: 'id', enableCellEdit: false}, 
     { name: 'name' }, 
     { name: 'age', displayName: 'Age' , type: 'number', width: '10%' } 
     ]; 


     $http.get('https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json') 
     .success(function(data) { 
      $scope.gridOptions.data = data; 
     }); 
    }]) 

Plunker

Antwort

18

Fügen Sie folgendes zu Ihrem Controller:

$scope.gridOptions.onRegisterApi = function(gridApi) { 
    //set gridApi on scope 
    $scope.gridApi = gridApi; 
    gridApi.edit.on.afterCellEdit($scope, function(rowEntity, colDef, newValue, oldValue) { 
    //Do your REST call here via $http.get or $http.post 

    //Alert to show what info about the edit is available 
    alert('Column: ' + colDef.name + ' ID: ' + rowEntity.id + ' Name: ' + rowEntity.name + ' Age: ' + rowEntity.age); 
    }); 
}; 

Sie alle Informationen über die haben Spalte bearbeitet wurde (in colDef.name) und was die tatsächliche Werte der Zellen sind (in rowEntity.xxx).

Jetzt müssen Sie nur Ihre REST-API aufrufen (um unnötigen Datenverkehr zu vermeiden, können Sie auch newValue mit oldValue vergleichen, um zu sehen, ob der Inhalt tatsächlich geändert wurde).

Sie müssen die Daten nicht erneut laden, da die Änderungen bereits auf den Bereich angewendet wurden.

Suchen Sie hier eine forked Plunker.

zweiten Teil Ihrer Frage:

Keine Ihrer Reihen wählbar sind. Und das könnte ein bisschen kompliziert werden. Bitte starten Sie eine neue Frage (mit einem neuen Plunker) zu diesem Problem.

+1

danke .. es funktioniert –

+0

Scheint immer noch richtig mit UI-Grid 4.x zu arbeiten! Vielen Dank! Dies ist nirgends gut dokumentiert, wo ich es finden könnte. – waffles