Reputation: 819
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
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
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