I want to add link to ng-grid. Here is my code for your reference
<html ng-app="myApp">
<head lang="en">
<meta charset="utf-8">
<title>Getting Started With ngGrid Example</title>
<link href="../../Content/ng-grid.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/jquery-1.9.1.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-ui-1.8.20.js" type="text/javascript"></script>
<script src="../../Scripts/angular.js" type="text/javascript"></script>
<script src="../../Scripts/ng-grid.js" type="text/javascript"></script>
<script src="../../Scripts/main.js" type="text/javascript"></script>
<script type="text/javascript">
var app = angular.module('myApp', ['ngGrid']);
app.controller('MyCtrl', function ($scope) {
$scope.myData = [{ name: "RK.PRABAKAR", age: 25, href: "<a href='#'>Link1</a>" },
{ name: "Yoga", age: 27, href: "<a href='#'>Link1</a>" },
{ name: "James", age: 27, href: "<a href='#'>Link1</a>" },
{ name: "Siva", age: 35, href: "<a href='#'>Link1</a>" },
{ name: "KK", age: 27, href: "<a href='#'>Link1</a>"}];
$scope.pagingOptions = {
pageSizes: [2, 4, 6],
pageSize: 2,
currentPage: 1
};
$scope.gridOptions = {
data: 'myData',
enablePaging: true,
showFooter: true,
enableCellSelection: true,
enableRowSelection: false,
enablePinning: true,
pagingOptions: $scope.pagingOptions,
enableCellEdit: true,
columnDefs: [{ field: 'name', displayName: 'Name', enableCellEdit: true },
{ field: 'age', displayName: 'Age', enableCellEdit: true },
{ field: 'href', displayName: 'Link', enableCellEdit: false }]
};
});
</script>
<style>
.gridStyle {
border: 1px solid rgb(212,212,212);
width: 500px;
height: 300px;
}
</style>
</head>
<body data-ng-controller="MyCtrl">
<div class="gridStyle" data-ng-grid="gridOptions"></div>
</body>
Right now data grid is working fine except href link in grid. Link is not rendered to html tag it is displayed as normal string. I want to add link to ng-grid from myData
This worked for me with ui-grid 4.0.7 and angular 1.6.6, my properties are easily accessible in row.entity:
(added line breaks for clarity, remove when pasting)
Update:
It has been noted that this answer does not work with
ui-grid
. This is understandable since at the time of the answer onlyng-grid
existed; however, substituting{{COL_FIELD}}
in place of{{row.getProperty(col.field)}}
allows the solution to be valid for bothng-grid
andui-grid
.I know I used
COL_FIELD
in these situations around the time I wrote this answer, so I'm not sure of my rationale for answering with the longerrow.getProperty(col.field)
…but in any event, useCOL_FIELD
and you should be good to go withng-grid
andui-grid
.Original (unchanged) Answer:
You just need to define a cell template for the Link field…
You can do this inline:
Or you can do this by using a variable (to keep your gridOptions a little cleaner:
Or you could even put your template in an external HTML file and point to the URL:
…and you only need to store the URL as
href
inmyData
to work with this solution :)Look here for an example of a cell template.
The answer that Kabb5 gave is correct, but it appears that for newer versions of ui-grid, it does not work. Everything regarding the cellTemplate is valid, however, instead of
You need to do:
This was the only way I was able to get this to work.
Right.
Levi's
{{COL_FIELD}}
works withangular-ui-grid 3.0.0-rc.20
.To get property of the object in a row, one can just use
row.entity.propertyName