2016-02-10 122 views
7

私は行を削除しようとしているグリッドグリッドを持っています... "splice"テクニックを使用してデータソースから行を削除することができました。その後、テーブルをリフレッシュする必要があります。エラーを表示しています。私は、行行の削除後にag-gridをアップグレード/リフレッシュするにはどうすればよいですか?

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(); 
     } 
    } 
} 

このようなerroe何かを見せて削除するために使用していたコードである - >未定義のプロパティ「refreshView」を読み込めませんが...行削除後のテーブルで行った変更を見ることができますどのように。

答えて

14

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

gridOptions.api.setRowData(gridOptions.rowData) 

多分これplunkrはAG-グリッドのhttps://plnkr.co/0k4sYa

著者はAG-グリッドフォーラムでこれを説明するのに役立ちます

+0

あなたはこれが説明されているag-gridフォーラムへのリンクを提供できますか?私は登録しましたが、私はエンタープライズユーザではないので、その理由を正しく検索できません。 –

+1

私は企業ユーザーでもありません。しかし、あなたはまだフォーラムなしでフォーラムを検索することができます。 このようにhttps://ag-grid.com/forum/showthread.php?tid=3726&pid=8876&highlight=setRowData#pid8876 –

+0

ありがとう!私はフォーラムでそれを見つけることができませんでしたが、答えは完全に最新ではないことが判明しました。下記の@ user3294566の回答を参照してください。しかし、あなたの答えはagGridの2016年代初めのバージョンでは正しいです。新しいバージョンでは、行の削除とそれに続くリフレッシュを簡単に行うためのAPIコールがずっと簡単です。 –

4

パフォーマンスを向上させるには、グリッド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/

+0

あなたは 'newRow'を挿入のどこかで使用していません。代わりに' rowData'があります。私はそれを変える必要があると思う。 –

+1

修正しました。ありがとうございます。 – user3294566

+0

あなたの答えをありがとう!今私には明らかですが、2017年中頃にagGridが動作する方法が変更されました。元の質問は2016年に尋ねられました。実際にはagGridの古いバージョンがありました。 AgGridの現在のバージョン!)は機能しませんでした。つまり、JSコンソールに欠落しているAPI関数のエラーが発生しました。確かに、あなたは答えた(私はupvoted :-))OPは何を達成するためのより正確な、最新の方法です - *すべての*行をaggridに再びフィードする必要はありません2016年の初めのケースと思われた。 –

関連する問題