5.20231.904
5.20231.904

Hyperlink Columns in FlexGrid using CellMaker

We have an easy way to add Hyperlink Columns to our JavaScript DataGrid. In that last release, we added a cellTemplate property to the FlexGrid's Column class. This property allows developers to define custom content for cells using template literals, which provide a lot of flexibility.

In many cases, the cellTemplate is simpler and easier to use than the formatItem event. But some of our customers wanted something even more manageable , so they would not have to write any HTML if all they wanted to do was create some common simple cells like buttons and hyperlinks.

We listened and decided to leverage the cellTemplate property to build a new module called CellMaker. The CellMaker module provides methods that create several types of simple and useful cells, including Hyperlinks.

Let's look at how we can use CellMaker to add a Hyperlink column to FlexGrid. To create hyperlink columns, use the CellMaker class as follows:

 import { FlexGrid, ICellTemplateContext } from '@grapecity/wijmo.grid';  
 import { CellMaker } from '@grapecity/wijmo.grid.cellmaker';  

 let theGrid = new FlexGrid('#theGrid', {  
     showMarquee: true,  
     autoGenerateColumns: false,  
     columns: [  

         // link with custom text and bound href  
         {  
             header: 'Real Link',  
             binding: 'country',  
             cellTemplate: CellMaker.makeLink({  
                 text: 'Visit <b>${item.country}</b>',  
                 href: '${item.url}',  
                 attributes: {  
                     target: '_blank',  
                     rel: 'noopener noreferrer',  
                     tabIndex: -1  
                 }  
                 // no need for click handler, the link navigates automatically  
             })  
         }  
     ]  
 });

The code sets the column's cellTemplate property to an ICellTemplateFunction provided by the CellMaker's makeLink method.

The makeLink method takes an options parameter that allows you to provide custom text for the link, an href that specifies the link target, and attributes for the link. Alternatively, you could also specify a handler for the click event.

The result looks like this:

Hyperlink Column in JavaScript DataGrid