AngularJS ng-grid - dynamically update columns and results

I am new to ng-grid. How we dynamically update columns and results inside the grid.

I created http://plnkr.co/edit/CwUVIzSKVNCMTgpOW87f?p=preview

Script

var app = angular.module('myApp', ['ngGrid']); app.controller('MyCtrl', function($scope) {
    $scope.myData = [{name: "Moroni", age: 50},
                     {name: "Tiancum", age: 43},
                     {name: "Jacob", age: 27},
                     {name: "Nephi", age: 29},
                     {name: "Enos", age: 34}];  
    $scope.gridOptions = { 
        data: 'myData',
        columnDefs: [{field: 'name', displayName: 'Name'}, {field:'age', displayName:'Age'}]
    };

    $scope.update_columns = function($event){ console.log("asd")
      $scope.myData = [{new_name: "Moroni", new_age: 50, pin: 123},
       {new_name: "Tiancum", new_age: 43, pin: 345},
       {new_name: "Jacob", new_age: 27, pin: 567},
       {new_name: "Nephi", new_age: 29, pin: 789},
       {new_name: "Enos", new_age: 34, pin: 012}
      ];

      $scope.gridOptions.columnDefs = [
        {field: 'new_name', displayName: 'New Name'}, 
        {field:'new_age', displayName:'New Age'},
        {field:'pin', displayName:'Pin'}
      ];

    } });

When the page loads, the grid will display the result set and by clicking the change columns, we need to update the results and columns. The method that I implemented right now does not work properly. Am I doing something wrong?

Thanks in advance.

+4
source share
2 answers

. columnDefs , scope. data, .

Plunker.

js:

var app = angular.module('myApp', ['ngGrid']);
app.controller('MyCtrl', function($scope) {
    $scope.columns1 = [{field: 'name', displayName: 'Name'}, {field:'age', displayName:'Age'}];
    $scope.columns2 = [{field: 'new_name', displayName: 'New Name'}, {field:'new_age', displayName:'New Age'},{field:'pin', displayName:'Pin'}];
    $scope.columnsSelected = $scope.columns1;
    $scope.myData = [{name: "Moroni", age: 50},
                     {name: "Tiancum", age: 43},
                     {name: "Jacob", age: 27},
                     {name: "Nephi", age: 29},
                     {name: "Enos", age: 34}];  
    $scope.gridOptions = { 
        data: 'myData',
        columnDefs: 'columnsSelected'
    };

    $scope.update_columns = function($event) { 

      $scope.columnsSelected = $scope.columns2;

      $scope.myData = [{new_name: "Moroni", new_age: 50, pin: 123},
       {new_name: "Tiancum", new_age: 43, pin: 345},
       {new_name: "Jacob", new_age: 27, pin: 567},
       {new_name: "Nephi", new_age: 29, pin: 789},
       {new_name: "Enos", new_age: 34, pin: 012}
      ];
    }
});
+17

, Angular , Defs/columnsSelected:

app.controller('MyCtrl', function($scope) {
$scope.columns = [];
$scope.columns[true] = [{field: 'name', displayName: 'Name'}, {field:'age', displayName:'Age'}];
$scope.columns[false] = [{field: 'name', displayName: 'New Name'}, {field:'age', displayName:'New Age'},{field:'pin', displayName:'Pin'}];
$scope.displayFlag = true;
$scope.columnsSelected = $scope.columns[$scope.displayFlag];
  $scope.myData = [
   {name: "Moroni", age: 50, pin: 123},
   {name: "Tiancum", age: 43, pin: 345},
   {name: "Jacob", age: 27, pin: 567},
   {name: "Nephi", age: 29, pin: 789},
   {name: "Enos", age: 34, pin: 012}
  ]; 
$scope.gridOptions = { 
    data: 'myData',
    columnDefs: 'columnsSelected'
};

$scope.update_columns = function($event) { 
  $scope.displayFlag = !$scope.displayFlag;
  $scope.columnsSelected = $scope.columns[$scope.displayFlag];
}

});

http://plnkr.co/edit/y5PXl78h653VCWtIMers?p=preview

+1

All Articles