2016-02-10 17 views
7

Ho una griglia in cui sto cercando di eliminare una riga ... Sono in grado di rimuovere la riga dall'origine dati usando la tecnica "splice", dopo di che voglio aggiornare la tabella.Ma si sta mostrando un errore.Questo è il codice che sto usando per eliminare una rigaCome aggiornare/aggiornare la griglia ag dopo l'eliminazione della riga?

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

sta mostrando erroe qualcosa di simile -> Impossibile leggere proprietà 'refreshView' di non definito ... Come si può vedere le modifiche apportate nella tabella dopo fila cancellare .

risposta

14

È necessario impostare le righe nella griglia di nuovo: dopo la vostra giunzione:

gridOptions.api.setRowData(gridOptions.rowData) 

Forse questo plunkr aiuta https://plnkr.co/0k4sYa

L'autore di ag-grid spiega questo nel forum ag-grid

+0

Ugh puoi fornire un link al forum di ag-grid dove questo è spiegato? Mi sono registrato ma non sono un utente aziendale, quindi forse è per questo che non riesco a cercare correttamente questa spiegazione. –

+1

Non sono un utente aziendale. Ma puoi ancora cercare nel forum senza uno. Come questo https://ag-grid.com/forum/showthread.php?tid=3726&pid=8876&highlight=setRowData#pid8876 –

+0

Grazie! Non sono riuscito a trovarlo nei forum, ma risulta che la risposta non è completamente aggiornata. Vedere la risposta da @ user3294566 qui sotto. Tuttavia, la tua risposta è corretta per le prime versioni 2016 di agGrid; le versioni più recenti hanno solo chiamate API molto migliori per eseguire facilmente la rimozione di una riga e il successivo aggiornamento. –

4

Per prestazioni migliori, utilizzare le chiamate api della griglia per aggiungere/rimuovere righe.
per inserire una riga all'inizio, che è la copia di una riga selezionata:

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

Per rimuovere una riga selezionata:

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

prega di inserire nuova riga solo dopo una profonda copia della riga originale .
In caso contrario, api continua a fare riferimento alla stessa riga.
Quindi, la successiva rimozione della nuova riga rimuoverà la riga originale dalla griglia.

Consultare la documentazione per i dettagli delle API.
https://www.ag-grid.com/javascript-grid-insert-remove/

+0

Non stai usando 'newRow' da qualche parte sull'inserto ... invece, hai' rowData'. Immagino che tu debba cambiarlo. –

+1

corretto, grazie per il controllo. – user3294566

+0

Grazie per la tua risposta! Mentre ora è ovvio per me, ci sono stati cambiamenti nel modo in cui agGrid funziona a metà 2017 - la domanda originale è stata posta nel 2016 - e in realtà avevo una versione * obsoleta * di agGrid, dove la tua risposta (che è corretta per la versione corrente di agGrid!) non ha funzionato, ovvero la console JS ha ricevuto alcuni errori per le funzioni API mancanti. In effetti, tu rispondi (che ho upvoted :-)) è il metodo più corretto e aggiornato per realizzare ciò che l'OP ha chiesto - non c'è * nessun * bisogno di alimentare * tutte * le righe di nuovo su agGrid, poiché sembrava essere il caso all'inizio del 2016. –

Problemi correlati