[英]How to get a node by index in ag-grid?
AgGrid 期望將節點傳遞給它的許多數據函數。 你如何通過索引獲取節點? 看下面的片段:
api.forEachNode(function(node){
api.refreshRows([node]);
})
我可以將node
參數傳遞給refreshRows()
函數,因為我是通過forEachNode()
獲取它的。
如何在不遍歷forEachNode()
的情況下通過索引獲取節點?
對於這個問題,這可能有點晚了,但無論如何對於將來正在搜索這個問題的人來說:
除了給出的答案外,您還可以通過以下方式獲取行節點,
// Getting the row node by the row index
cont rowNode1 = api.getDisplayedRowAtIndex(rowIndex);
在某些情況下,上述方法並不適用,因為當您對網格進行一些更改(排序、篩選等)時,rowIndex 可能會發生變化。
另一種方法是使用行的 id,即使你排序,過濾......網格也不會改變。
getRowNode(id) :返回具有給定 ID 的行節點。 行節點 id 是您通過回調 getRowNodeId(data) 提供的,否則,id 是設置行數據時網格自動生成的數字。
// Getting rowNode by row id
const rowNode2 = api.getRowNode(rowId);
您可以使用getVirtualRow()
方法獲取單行。 此功能是行模型的一部分。 您可以通過getModel()
函數獲取行模型。
var model = api.getModel();
console.log(model.getVirtualRow(idx));
基於@Charlie H 的回答,完全有可能自從他使用的版本以來,API 發生了一些變化。 我正在使用(截至 2017 年 12 月的當前版本)15.0. 我發現rowsToDisplay[]
包含可訪問的行數組。 例如,以下內容完全符合您的想象:
onCellEditingStarted: function (event) {
var displayModel = gridOptions.api.getModel();
var rowNode = displayModel.rowsToDisplay[event.rowIndex];
rowNode.setRowHeight(100);
gridOptions.api.onRowHeightChanged();
},
如果你想逐行遍歷網格,你可以使用它(其中 $scope.grid 是你的網格名稱):
$scope.high_index = 0;
$scope.rows = [];
$scope.grid.api.forEachNode(function (node) {
$scope.rows[node.childIndex] = node.id;
if (node.childIndex > $scope.high_index)
$scope.high_index = node.childIndex;
});
for (i = 0; i <= $scope.high_index; i++) {
var node = $scope.grid.api.getRowNode($scope.rows[i]);
}
或者,如果你想要一個按子索引的行節點,你現在可以使用(在上面設置 $scope.rows 之后):
var node = $scope.grid.api.getRowNode($scope.rows[i]);
我是你想要的行號。
AgGrid希望將節點傳遞到其許多數據功能中。 如何獲得索引節點? 請看下面的代碼片段:
api.forEachNode(function(node){
api.refreshRows([node]);
})
我可以將node
參數傳遞給refreshRows()
函數,因為我是通過forEachNode()
獲得它的。
如何在不迭代forEachNode()
情況下按索引獲取節點?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.