20

行を削除しようとしている ag グリッドがあります...「スプライス」手法を使用してデータ ソースから行を削除できます。その後、テーブルを更新します。しかし、エラーが表示されます。行を削除するために使用しているコード

selectedvalue={} //this holds the selected row value
rowData=[]; //this holds all the row data
onRowSelected(event) {
  this.selectedvalue = event;
 }
deletebtn() {
    for (let i = 0; i < this.rowData.length; i++) {
        if (this.selectedvalue.node.data.make === this.rowData[i].make) {
            this.rowData.splice(i, 1);
            this.gridOptions.api.refreshView();
        }
    }
}

このようなエラーが表示されています->未定義のプロパティ「refreshView」を読み取れません...行の削除後にテーブルに加えられた変更を監視するにはどうすればよいですか。

4

6 に答える 6

32

編集: このソリューションはバージョン3.3.x用です(更新された plkr リンク)

行をグリッドに再度設定する必要があります。スプライスの後:

gridOptions.api.setRowData(gridOptions.rowData)

たぶん、このplunkrが役立ちます https://plnkr.co/plunk/0k4sYa

ag-grid の作成者が ag-grid フォーラムでこれを説明しています。フォーラムはもう存在しません

于 2016-02-29T08:42:27.743 に答える
7

パフォーマンスを向上させるには、グリッド API 呼び出しを使用して行を追加/削除します。
選択した行のコピーである行を先頭に挿入するには:

var rowData = JSON.parse(JSON.stringify(selectedNode.data));
gridOptions.api.insertItemsAtIndex(0, [rowData]);

選択した行を削除するには:

var selectedNodes = gridOptions.api.getSelectedNodes();
gridOptions.api.removeItems(selectedNodes);

元の行のディープ コピーの後にのみ、新しい行を挿入してください。
それ以外の場合、api は引き続き同じ行を参照します。
したがって、その後の新しい行の削除により、元の行がグリッドから削除されます。

API の詳細については、ドキュメントを参照してください。
https://www.ag-grid.com/javascript-grid-insert-remove/

于 2017-01-09T20:38:16.167 に答える
1

aggrid の特定のセルのデータを更新するには

        let rowNode = f.gridApi.getRowNode(f.id);  // use to find the rowNode
        rowNode.setDataValue('myPrice','1000') // update the datavalue in the price cell

fはaggridの現在のノードです

于 2020-01-09T06:07:50.347 に答える