Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implementing a hyperlink within a dojo datagrid

This is my first time working with datagrids so please forgive anything that is unclear.

I have json text that is being implemented in a dojo datagrid (dojox.grid.DataGrid).

  var jsonStore = new dojo.data.ItemFileWriteStore({ url: "xAgent.xsp"});
  var layout = [
    {cells:[ [ 
      {field:'firstname', name:'First'}, 
      {field:'lastname', name:'Last'},
      {field:'policy', name:'Policy'},
      {field:'lastaccessed', name:'Last Accessed'}
      ] ], noscroll:false
    }
  ];

  grid = new dojox.grid.DataGrid({
    store: jsonStore,
    structure: layout,
    rowsPerPage: 50,
    autoHeight: 50
  }, '#{id:gridNode}');
grid.startup();

The grid itself is created perfectly fine and all data is displayed as desired, but I would like for one of the fields (the 'policy' field to be specific) to link towards another page. I need to include the information within the 'policy' field when I redirect as the policy number will be used in the next page.

In other words, I want all of the policy fields within my table to have their own unique external link that will contain the policy number from that respective field. The easiest way I can think of doing that is by changing the layout variable that feeds into the DataGrid's structure parameter, but there might be an easier way. If anyone has any ideas I would be very grateful.

Thanks in advance.

like image 593
cards Avatar asked Jun 13 '14 20:06

cards


1 Answers

You can use formatter to create links, dojo buttons etc inside the grid.

Formatter is a JavaScript function that is called which returns the value to be shown in the cell. The value from the data store is passed as a parameter to the function. The returned value that is inserted into the page can be any legal HTML or even a dijit widget.

So in your case, add a formatter to policy column

{field:'policy', name:'Policy', formatter: createLink},

Then define the function with necessary external link. For example:

function createLink(data){
    return ("<a href=policyinfo.jsp?policy="+data+">"+data+"</a>");
}

Reference: http://dojotoolkit.org/reference-guide/1.10/dojox/grid/DataGrid.html#id3

like image 189
robin Avatar answered Nov 13 '22 02:11

robin