Retrieving original row data from jqGrid

27,823

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'
Share:
27,823
DaveJ
Author by

DaveJ

Updated on July 09, 2022

Comments

  • DaveJ
    DaveJ almost 2 years

    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.

  • Dan
    Dan almost 14 years
    This gets the content - not the value;
  • Justin
    Justin almost 13 years
    +1 Now you need the root and userdata value to be "rows", not "Data", but other than that it works great with the latest version.