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:
- In my case the grid is paged so the result set is never greater than 10 items therefore the 'userdata' wont grow too large
- Sorting is performed server side so that index
rowId
will always return the correct value from 'userData'
- 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'