2011-06-20 53 views
5

如何获取网格中每一行的ID(甚至跨页)?获取jqGrid中的所有行ID

getDataIDsgetRowData只给出当前页面的ID。

谢谢!

+1

你不能,因为其他页面可能尚未加载。 –

+1

我不喜欢那个答案:( –

+0

好吧,你不能问网格数据,它没有,你可以吗?你需要问唯一的事情* * *有这样的数据:你的服务器。 –

回答

13

只有当您有本地电网(datatype:'local'或有loadonce:true)时才有可能。在所有页面的所有包含数据的ID都已经在本地的情况下。在这种情况下,您可以使用_index参数,该参数通常与另一个更为已知的参数data一起使用。用

var idToDataIndex = $("#list").jqGrid('getGridParam','_index'); 

你会得到_index参数。它是一个具有所有网格属性的对象。所以,你可以用

var id; 
for (id in idToDataIndex) { 
    if (idToDataIndex.hasOwnProperty(id)) { 
     // id is the rowid. 
     // to get the data you can use 
     // mydata[idToDataIndex[id]] where 
     // var mydata = $("#list").jqGrid('getGridParam','data'); 
    } 
} 
+0

您好Oleg,我的jqgrid有数据类型:json和我通过json阅读器读取数据。我已经给了loadonce = true,即使那么我也面临这个问题,其中getRowData只返回当前页面的ID。我怎么能解决这个问题?谢谢你的帮助。 – user1447718

+0

@ user1447718:是的,你可以使用'$(“#list “).jqGrid('getGridParam','data');'获取数据关于*所有页面*。如果没有包含'id'信息的列,那么你可以使用'$(“#list”)。jqGrid('getGridParam','_index')'获得'data'数组中的所有id和索引,数据对应于id。 – Oleg

+1

谢谢奥列格。虽然在我的jqgrid中看到奇怪的东西。我给了以下数据类型:'json',loadonce:'true',cellsubmit:'clientArray'。数据将分两页加载。但是当我做inspectelement时,我看到TRs只为第一页创建。我没有看到第二页的TR。在第一页中,getRows是不是返回第二页的数据? – user1447718

0

列举的ID在以后的版本中的jqGrid,他们推出了适合这一情况更好,因为它会考虑任何工具栏过滤可能代替功能。 See Oleg's example here.因此,如果您有jqGrid(loadonce:true和/或datatype:local),则以下操作将返回与当前过滤匹配的所有行ID(显示在当前页面中)。

var allIdsWithFiltering = grid.jqGrid('getGridParam', 'lastSelectedData'); 

这将返回一个普通数组,不像原来的答案,这与必须被枚举的属性返回一个对象。