【问题标题】:How to return jqgrid data of selected rows如何返回选定行的jqgrid数据
【发布时间】:2014-09-13 18:44:48
【问题描述】:

在 JQGrid 中

 var gridData=$("#SearchResults").jqGrid('getRowData')

上面的行给了你所有行的网格数据,有没有一种方法可以让我只得到选定行的网格数据。

selRowId = myGrid.jqGrid ('getGridParam', 'selrow'),

上面给出了选定的行 ID,但我想要所有选定行的数据,因为它使用 gridData 返回,但我只需要选定行的数据

【问题讨论】:

    标签: javascript jquery jqgrid


    【解决方案1】:

    这很简单。 getRowData 方法的第二个可选选项参数是请求数据的行的rowid(参见the documentation)。所以你可以使用

    var selRowId = myGrid.jqGrid("getGridParam", "selrow");
    

    先获取最后选中的rowid,再获取该行的数据

    var rowData = myGrid.jqGrid("getRowData", selRowId);
    

    如果您使用datatype: "local" 或一些远程datatype"xml""json"),但使用loadonce: true,则jqGrid 将数据内部保存在data 数组中。如果使用getLocalRow 方法比使用getRowData 更有效:

    var rowData = myGrid.jqGrid("getLocalRow", selRowId);
    

    如果您使用multiselect: true 选项,那么jqGrid 支持selarrrow 选定rowids 数组,您可以在循环中获取所有需要的数据:

    var i, selRowIds = myGrid.jqGrid("getGridParam", "selarrrow"), n, rowData;
    for (i = 0, n = selRowIds.length; i < n; i++) {
        rowData = myGrid.jqGrid("getLocalRow", selRowIds[i]);
        // one can uses the data here
    }
    

    【讨论】:

    • 在 4.5.4 版中,如果网格的排序方式与原始数据不同,则不会返回正确的行数据。还有id是选中的行,id在onSelectRow: function (id, status, e) { ... }
    • @AaA:我确定你错了。我想你误解了什么是rowid。许多新手将行索引与 rowid 混合在一起,并以错误的方式另外填充网格(未在输入数据中指定 id)。我建议您使用演示您的问题的演示发布新问题。此外,我建议您将复古版本 4.5.4(超过 4 年)升级到 free jqGrid 4.15.2。
    • 谢谢奥列格,我知道。我想我写错了。我在您的解决方案中指的是selRowId,它等于onSelectRow 事件中的id。在 4.5.4 版本中它返回不正确的行,但它在 4.15.2 中正常工作。
    • @AaA:不客气!升级到 4.15.2 应该会额外提高性能。我强烈建议您根据当前问题进行升级。我仍然不确定版本 4.5.4 是否包含 getLocalRow 中的错误。我想你有另一个问题。如果你能提供重现问题的演示,我可以分析它。
    • 当然,我会将其作为问题发布并在此处添加注释。再次感谢您
    【解决方案2】:

    如果您尝试从 onSelectRow 等网格事件中获取数据,您可以忽略 Oleg 答案的第一部分并获取如下数据:

    myGrid.jqGrid({
        ... // Grid create options ->
        datatype: 'local',
        data: gridData,  
        // <--
        onSelectRow: function(id){
            data = $(this).jqGrid("getLocalRow", id);
    
            // if you need actual content of the cells
            // data = myGrid.jqGrid("getRowData", id); 
        }
    });
    

    显然这只适用于单行,但是如果意图是,我相信奥列格的答案是唯一的选择。

    注意:这在 4.5.4 及以下版本中不起作用,但在 oleg's free jqgrid 4.15.2 中已修复

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-02
      • 2011-11-04
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多