views:

1196

answers:

2

It is possible to use the getRowData method to retrieve the current of a cell but this retrieves the current cell content rather than the original data before it went through the formatter.

How do I retrieve the original content before the formatting transformations are applied? FYI I am populating the table using JSON.

+1  A: 

I had to dig through the documentation a bit to come up with the solution, to see it in its original context go here: jqGrid Data Manipulation, specifially the section near the end titled "User Data".

First, modify your jsonReader implementation as follows:

 jsonReader: {
      root: 'Data',
      page: 'Page',
      total: 'Total',
      records: 'Records',
      userdata : 'Data',
      repeatitems: false,
      id: 'Id'
 }

Note the userdata option set to the same as root 'Data'

In my case I needed to retrieve the original row data when the user selected a row. I implemented this as follows:

 onSelectRow: function(rowid) {
                    processRow(rowid);
                }

To retrieve the data within the process row method I have the following:

var rowData = $("#resultGrid").getGridParam('userData')[rowId - 1];

Where #resultGrid is a reference to my jqGrid.

This will then return the original data bound to that row before any formatting was applied.

A couple of points to note:

  1. In my case the grid is paged so the result set is never greater than 10 items therefore the 'userdata' wont grow too large
  2. Sorting is performed server side so that index rowId will always return the correct value from 'userData'
  3. While 'userdata' as referenced as an option on jsonReader is all lower case, to retrieve it using getGridParam you need to reference it as 'userData'
R Bremner
A: 

This is how to retrieve cell data from a row.

var rowData = jQuery(this).getRowData(rowId); var colData = rowData['columnName']);

columnName is table's column name.

sun
This gets the content - not the value;
Dan