James
James

Reputation: 819

Callback for When jqGrid Finishes Reloading?

I am using the jqGrid plug-in and at one point I need to refresh the grid and set the selected row to match the record that I am showing in detail on another section of the page. I have the following code but it does not work:

$("#AllActions").trigger("reloadGrid").setSelection(selectedRow);

The selectedRow parameter comes from an event handler that gets called when the data is changed and the grid needs to be updated.

I'm pretty sure that the problem is that the grid is not loaded when the selection is being set, because if I put a call to alert() between the calls to trigger() and setSelection(), it works.

I would be grateful for any advice.

[Edit]Looks like jqGrid's setSelect does not work after reloadGrid is related but did not get resolved.[/Edit]

Upvotes: 2

Views: 7105

Answers (2)

Luis Eduardo
Luis Eduardo

Reputation: 11

Try this, I did it, and it works.

setTimeout("$('#grid').jqGrid('setSelection','"+id+"')", 1000); 

and of course in the config of the master grid.. you can use somthing like this

onSelectRow: function(ids) { 
  if(ids == null) { 
    ids=0; 
    if($("#grid-detail").jqGrid('getGridParam','records') >0 ) { 
        $("#grid-detail").jqGrid('setGridParam',{url:"server.php?&grid=1&oper=get_records&id=&id="+ids,page:1}); 
        $("#grid-detail").jqGrid().trigger('reloadGrid'); 

    } 
  } else { 
        var arr = jQuery("#list-maestro").getRowData( ids );
        var id = arr.id; 
        $("#grid-detail").jqGrid('setGridParam',{url:"server.php?&grid=1&oper=get_records&id="+id,page:1}); 
        $("#grid-detail").jqGrid().trigger('reloadGrid'); 
  }
}

Upvotes: 1

Oleg
Oleg

Reputation: 221997

Firts of all you should save rowid of the old selection in a variable, then call $("#AllActions").trigger("reloadGrid") and inside of loadComplete event handler set selection with respect of $("#AllActions").setSelection(rowid).

Don't forget to set option scrollrows:true of the jqGrid, to be sure that the selected row will be visible.

Upvotes: 5

Related Questions