onSelectRow中的jqGrid Row对象

时间:2011-10-20 15:57:43

标签: jquery jqgrid

如何在jqGrid中选择行上的行对象?我需要实际的对象,而不是cellvalue。我已经阅读了文档,但找不到能给我行对象的方法。因为我使用自定义格式化程序,所以cellValue将不起作用。

3 个答案:

答案 0 :(得分:10)

如果您实施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参数,它是从服务器发布的原始数据。因此,您可以在对象中保存所需的数据(在mapid中通过rowid获取yut对象),并在onSelectRow事件处理程序中使用它。

答案 1 :(得分:3)

您可以使用getInd和getLocalRow方法:

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

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

答案 2 :(得分: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。