2015-07-31 6 views
10

Ich habe ein Problem über columnDefs dynamisch ändern. Hier ist meine gridOptions:Angular Grid AG-Grid SpalteDefs Dynamisch ändern

$scope.gridOptions = { 
     columnDefs: [], 
     enableFilter: true, 
     rowData: null, 
     rowSelection: 'multiple', 
     rowDeselection: true 
    }; 

und wenn ich Daten vom Server retrive:

$scope.customColumns = []; 

$http.post('/Home/GetProducts', { tableName: 'TABLE_PRODUCT' }).success(function (data) { 
    angular.forEach(data.Columns, function (c) { 
     $scope.customColumns.push(
      { 
       headerName: c.Name, 
       field: c.Value, 
       width: c.Width 
      } 
     ); 
    }); 

    $scope.gridOptions.columnDefs = $scope.customColumns; 

    $scope.gridOptions.rowData = data.Products; 
    $scope.gridOptions.api.onNewRows(); 
}).error(function() { 

}); 

Anmerkung: hier ist c Spalte Objekt, das vom Server kommt.

Wenn Spalten dynamisch generiert und $ scope.gridOptions.columnDefs zugewiesen werden, ist ein leeres Raster vorhanden, aber das Array $scope.customColumns ist mit rechts generierten Spaltenobjekten gefüllt. Bitte helfen Sie mir, ist dieser Fehler oder mache ich etwas falsch?

Antwort

28

In ag-grid werden die Spalten in gridOptionen einmal bei der Gitterinitialisierung verwendet. Wenn Sie die Spalten nach der Initialisierung ändern, müssen Sie das Raster angeben. Dies geschieht durch Aufrufen von gridOptions.api.setColumnDefs()

Details dieser API-Methode sind in der ag-grid documentation here zur Verfügung gestellt.

+0

Dank Naill Crosby, das Problem wurde gelöst. –

+0

Um ehrlich zu sein, ist dies ein sehr unangliederter, unreaktiver Teil des Designs von ag-grid. – windmaomao