Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I change the primary ID of a row in JQGrid without reloading?

Tags:

jqgrid

I'm trying to implement inline inserting in a JQGrid. My approach thus far is:

  • Use addRowData to put a blank row at the end with ID=-1
  • Use editGridRow to edit that row
  • Detect on the server that this update is actually an insert because ID=-1, and return the new ID value

Suprisingly, this rube goldberg scheme works pretty well. To make it seamless, though, I'd like to silently update the ID of the row that was just added, so that the user can continue to edit the other columns. I'd rather not do a grid.trigger("reloadGrid"), because I lose focus on that row.

I've tried

grid.setRowData(-1, { MyPrimaryKeyField: newID });

but that doesn't work (it still thinks the row's ID is -1). Is there an easy way to change the primary ID of a row without reloading the whole grid?

like image 525
Herb Caudill Avatar asked Dec 17 '09 17:12

Herb Caudill


2 Answers

Actually you can't change grids primary row Id by "setRowData", but there is a simple way to do it :

$("#-1").attr('id',newId);

;-)

like image 151
Soren Avatar answered Dec 05 '22 14:12

Soren


You could work around this by making an AJAX call to do the insert and return the new ID. Once you have the ID, call reloadGrid and then select the row using the newly returned ID. You would want to also put up a spinner while you are doing this so the user knows your page is busy. Not quite what you are asking for but it should meet your needs.

like image 43
Justin Ethier Avatar answered Dec 05 '22 15:12

Justin Ethier