代码之家  ›  专栏  ›  技术社区  ›  James

当jqgrid完成重新加载时的回调?

  •  2
  • James  · 技术社区  · 14 年前

    我正在使用jqgrid插件,在某一点上,我需要刷新网格并设置所选行以匹配我在页面的另一部分中详细显示的记录。我有以下代码,但它不起作用:

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

    selectedRow参数来自一个事件处理程序,该处理程序在数据更改和网格需要更新时被调用。

    我很确定问题是当设置选择时网格没有被加载,因为如果我在trigger()和set selection()的调用之间放置一个alert()调用,它会起作用。

    如果有任何建议,我将不胜感激。

    [编辑]看起来像 jqGrid's setSelect does not work after reloadGrid 是相关的,但未得到解决。[/edit]

    2 回复  |  直到 13 年前
        1
  •  5
  •   Oleg    14 年前

    首先,应将旧选择的rowid保存在变量中,然后调用 $("#AllActions").trigger("reloadGrid") 里面 loadComplete 事件处理程序集选择相对于 $("#AllActions").setSelection(rowid) .

    别忘了设置选项 scrollrows:true 以确保所选行可见。

        2
  •  1
  •   µBio    13 年前

    试试这个,我做到了,而且效果很好。

    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'); 
      }
    }