NG-Grid is not a part of Angular Bootstrap and needs to be added separately. To install Angular Grid use bower to download the components for ng-grid. In your terminal navigate to your project folder, and type in the following commands.
bower install ng-grid
You should now be able to see the ng-grid folder and the files within the bower_components folder. The next thing is to include the ng-grid JS and CSS files in our index.html.
Please add the following highlighted line in your app/index.html file to include the ng-grid CSS file.
<link rel="stylesheet" href="styles/bootstrap.css"> <link rel="stylesheet" href="bower_components/ng-grid/ng-grid.css"> <link rel="stylesheet" href="styles/main.css">
Add the ng-grid JS file as highlighted
<script src="bower_components/jquery/jquery.js"></script> <script src="bower_components/angular/angular.js"></script> <script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script> <script src="bower_components/ng-grid/ng-grid-2.0.7.min.js"></script>
Next you need to add the ngGrid dependency to your AngularApp, you’ll do this by adding in your app/scripts/app.js file as highlighted.
angular.module(AngularApp, ['ui.bootstrap','ngGrid'])
Now that you have NG-Grid added to your projects, create the routes, controllers, and partials for the subscribers page.
Open up the terminal and run the following command.
yo angular:route subscribers
Once you are done with this, you are all set to start working on your Subscribers view.
Open the app/scripts/controllers/subscribers.js file and create your model as follows:
$scope.subscribers =[]; var names=["Betty","John","Peter","Jaden", "Shannon"]; var loyalty=[3,5,7,8,7]; var joinDate=["3/5/10","5/5/12","5/8/11","11/6/13","10/12/10"];
Delete the awesomeThings model and initialize the subscribers model and create the arrays for names, loyalty and joinDate.
Next create a function that will add push the data into the subscribers model.
$scope.addUsers =function(i){ $scope.subscribers.push({ no:i+1, name:names[i], loyalty:loyalty[i], joinDate:joinDate[i] }); }
And finally run a for loop that iterates through the array elements and adds them to the model.
for (var i=0;i<5;i++){ $scope.addUsers(i); }
Now that the model is ready, you need to initialize the NG-Grid, so after the for loop lets initialize the ng-grid as follows:
$scope.gridOptions = { data: 'subscribers' };
Your work on the controller is done, let’s open the app/views/subscribers.html partial and add the markup for the Grid.
<h1>Subscribers</h1> <div class="gridStyles" ng-grid="gridOptions"> </div>
add the height and width properties to the .gridStyles class.
.gridStyles{ width:940px; height:300px;
To add the Column Definitions open the app/scripts/controllers/subscribers.js file, and add the following code as highlighted below:
$scope.gridOptions = { data: 'subscribers', showGroupPanel: true, jqueryUIDraggable: true, enableCellSelection: true, enableRowSelection: false, enableCellEdit: true, columnDefs: [ {field:'no', displayName:'No.'}, {field:'name', displayName:'Name'}, {field:'userType', displayName:'Subscription Type'}, {field:'loyalty', displayName:'Loyalty Score'}, {field:'joinDate', displayName:'Date of Joining'} ] };
For alternating row colors simply over riding the default odd and even row classes by adding the following classes to the app/styles/main.css file.
.ngRow.even { background: #eaeaff; } .ngRow.odd { background: #eaffea; }