2011-10-20 48 views
6

如何在jqGrid中选择的行上获取行对象?我需要实际的对象,而不是单元格。我已经通过文档,但找不到一个方法,会给我的行对象。因为我使用自定义格式化程序,所以cellValue不起作用。jqGrid onSelectRow中的行对象

回答

9

如果您实施custom formatter并且想要获得相对于getCellgetRowData的单元格值,则还必须实现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对象的映射中),并在事件处理函数中使用它。

+0

感谢您的支持,它向我指出了正确的方向 – SystemParadox

+1

@SystemParadox:不客气!我建议你另外检查'getLocalRow'方法。查看[答案](http://stackoverflow.com/a/9145342/315935)或[另一个](http://stackoverflow.com/a/10362294/315935)了解一些小代码示例和其他信息。该方法的[源代码](https://github.com/tonytomov/jqGrid/blob/v4.3.2/js/grid.base.js#L3494-3505)非常小,我建议您也阅读它。 – Oleg

+0

我不得不承认,我总是忽略它,但存储数据以备以后使用loadComplete是一个非常有价值的功能。由于我从不使用数据类型:'local'或loadonce:true。我甚至想知道为什么它不是默认存储在某种'rawdata'属性中。无论如何感谢您指出奥列格。 +1 – Steven

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。

相关问题