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