【问题标题】:jqGrid Row Object in onSelectRowonSelectRow 中的 jqGrid 行对象
【发布时间】:2011-10-20 15:57:42
【问题描述】:

如何在 jqGrid 中选择的行上获取行对象?我需要实际的对象,而不是单元格值。我已经浏览了文档,但找不到可以为我提供行对象的方法。因为我使用自定义格式化程序,所以 cellValue 将不起作用。

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    如果您实现custom formatter 并想要获取关于getCell 或getRowData 的单元格值,您还必须实现unformat 函数。

    不清楚您在“我需要实际对象,而不是单元格值”下的意思。还不清楚您使用哪个datatype,是否使用loadonce: true 选项以及是否从服务器加载数据,数据将以何种格式发布到服务器。

    如果您使用datatype: 'local' 或loadonce: true,内部data 和_index 参数将被填充。要通过rowid 从网格中获取原始数据,您可以使用

    var rowData = this.p.data[this.p._index[rowid]]
    

    或

    var grid = $(this),
        localdata = grid.jqGrid('getGridParam', 'data'),
        indexes = grid.jqGrid('getGridParam', '_index'),
        rowData = localdata[indexes[rowid]];
    

    如果您不使用datatype: 'local' 或使用loadonce: true 并仅从服务器加载数据,您可以将表示来自服务器响应的数据的对象保存在变量中(在对象中)。 loadComplete 事件处理程序有一个 data 参数,它是从服务器发布的原始数据。因此,您可以将所需的数据保存在对象中(在将通过 rowid 获取 yut 对象的地图中)并在 onSelectRow 事件处理程序中使用它。

    【讨论】:

    • @SystemParadox:不客气!我建议您另外检查getLocalRow 方法。查看the answer 或another one 以获取一些小代码示例和其他信息。 The source code的方法很小,推荐你也看一下。
    • 我不得不承认,我总是忽略它,但是在 loadComplete 上存储数据以供以后使用是一个非常有价值的功能。因为我从不使用数据类型:'local' 或 loadonce:true。我什至想知道为什么默认情况下它不存储在某种“原始数据”属性中。无论如何,感谢您指出奥列格。 +1
    • @Steven:不客气!如果总行数少于 1000 甚至 10000,我建议使用 loadonce: true 和较小的 rowNum(页面大小)。例如 the demo 在一个页面中使用 4000 行、13 列和 20 行,并且another demo 显示 40000 行。您可以尝试对网格进行排序、分页和过滤以查看性能。
    • @Oleg:嗨,Oleg 感谢您提供的出色示例。我知道一次加载所有数据只有好处。不幸的是,如果我请求所有数据,从 db 加载数据(这超出了我的责任)在很多情况下加载时间过长。所以我也向数据库发送分页查询。
    【解决方案2】:

    您可以使用 getInd 和 getLocalRow 方法:

    onSelectRow: function(rowid) {
        var row = $(this).getLocalRow(rowid);
        // do something with row
    }
    

    http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods

    【讨论】:

      【解决方案3】:

      在我的项目中:

      ondblClickRow : function(rowid,iRow,iCol,e) {
          $($("#completeDetail").getInd(rowid,true)).find(":first").click();
      }
      

      这样就解决了增加行找不到找行的问题

      使用这个功能 -> getInd(rowid,rowcontent).

      当 rowcontent 设置为 false(默认)时,此方法返回 id=rowid 指定的网格表中行的索引。如果 rowcontent 设置为 true,则返回条目行对象。如果找不到rowid,函数返回false。

      【讨论】:

        猜你喜欢
        • 2014-07-24
        • 1970-01-01
        • 1970-01-01
        • 2012-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多