7

AgGrid expects node(s) to be passed in to lot of it's data functions. How do you get a node by index? Look at the snip below:

api.forEachNode(function(node){
   api.refreshRows([node]);
})

I can pass the node parameter to refreshRows() function since I'm getting it through forEachNode().

How do you get a node by index without iterating through forEachNode() ?

4

5 に答える 5

11

メソッドを使用getVirtualRow()して、単一の行を取得できます。この関数は行モデルの一部です。関数ごとに行モデルを取得できgetModel()ます。

var model = api.getModel();
console.log(model.getVirtualRow(idx));
于 2016-01-11T08:35:38.947 に答える
3

@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();
},
于 2017-12-22T00:52:52.633 に答える
-1

できません。

これは、グリッドがデータのフィルター処理/並べ替えを行うように設計されているためです。したがって、インデックスによる作業は何の意味もなく、ネイティブでサポートされていません。

なぜ n 番目の行を更新する必要があるのですか? ユーザー アクションが原因である場合は、イベントをキャッチし、ノードを取得して、refresh を呼び出します。(イベント ドキュメントへのリンク: http://ag-grid.com/javascript-grid-events/index.php )

データ (行/列) が多すぎない場合は、グローバル リフレッシュを呼び出すだけです。

于 2016-01-11T08:00:24.347 に答える