簡體   English   中英

如何在ag-grid中通過索引獲取節點?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM