【发布时间】:2011-10-20 15:57:42
【问题描述】:
如何在 jqGrid 中选择的行上获取行对象?我需要实际的对象,而不是单元格值。我已经浏览了文档,但找不到可以为我提供行对象的方法。因为我使用自定义格式化程序,所以 cellValue 将不起作用。
【问题讨论】:
如何在 jqGrid 中选择的行上获取行对象?我需要实际的对象,而不是单元格值。我已经浏览了文档,但找不到可以为我提供行对象的方法。因为我使用自定义格式化程序,所以 cellValue 将不起作用。
【问题讨论】:
如果您实现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 事件处理程序中使用它。
【讨论】:
getLocalRow 方法。查看the answer 或another one 以获取一些小代码示例和其他信息。 The source code的方法很小,推荐你也看一下。
loadonce: true 和较小的 rowNum(页面大小)。例如 the demo 在一个页面中使用 4000 行、13 列和 20 行,并且another demo 显示 40000 行。您可以尝试对网格进行排序、分页和过滤以查看性能。
您可以使用 getInd 和 getLocalRow 方法:
onSelectRow: function(rowid) {
var row = $(this).getLocalRow(rowid);
// do something with row
}
【讨论】:
在我的项目中:
ondblClickRow : function(rowid,iRow,iCol,e) {
$($("#completeDetail").getInd(rowid,true)).find(":first").click();
}
这样就解决了增加行找不到找行的问题
使用这个功能 -> getInd(rowid,rowcontent).
当 rowcontent 设置为 false(默认)时,此方法返回 id=rowid 指定的网格表中行的索引。如果 rowcontent 设置为 true,则返回条目行对象。如果找不到rowid,函数返回false。
【讨论】: