我正在使用jqGrid插件,有时我需要刷新网格并设置所选行以匹配我在页面另一部分详细显示的记录。我有以下代码,但它不起作用:
$("#AllActions").trigger("reloadGrid").setSelection(selectedRow);
selectedRow参数来自一个事件处理程序,当数据发生更改并且需要更新网格时,它会被调用。
我很确定问题是在设置选择时没有加载网格,因为如果我在调用trigger()和setSelection()之间调用alert(),它就可以工作。
我很感激任何建议。
[编辑]看起来jqGrid's setSelect does not work after reloadGrid相关但未得到解决。[/ Edit]
答案 0 :(得分:5)
你应该在变量中保存旧选择的rowid,然后在$("#AllActions").trigger("reloadGrid")
内调用loadComplete
和$("#AllActions").setSelection(rowid)
事件处理程序集选择。
不要忘记设置jqGrid的选项scrollrows:true
,以确保所选行可见。
答案 1 :(得分:1)
试试这个,我做到了,它有效。
setTimeout("$('#grid').jqGrid('setSelection','"+id+"')", 1000);
当然在主网格的配置中..你可以使用像这样的东西
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');
}
}