2016-01-27 3 views
2

I ag-INITIALISER grille comme:Ajout de nouvelles lignes au réseau

Après avoir ajouté de nouveaux éléments au tableau les enregistrements, les lignes de grille ag sont pas updeted restent. Je dois appeler setRowData (enregistrements). Mais c'est très lent et l'ag-grid perd son état (comme la cellule focalisée).

Existe-t-il un autre moyen d'actualiser les lignes de la grille d'adresse lors du changement de données dans rowData.

Répondre

2

non, il n'y a pas d'autre moyen. la grille s'attend à ce que rowData soit immuable, ce qui signifie que vous devez remplacer le tableau pour la propriété [rowData] à récupérer. Comme vous le faites, cette méthode consiste à appeler la méthode api.setRowData(), qui force la grille à traiter rowData comme un nouvel ensemble de données.

+0

Merci, Niall Crosby –

0

Trouvé une solution. Peut-être que je perds certaines fonctionnalités et que je vais avoir quelques bugs, mais pour moi cela fonctionne maintenant.

AddRecord(data) { 
    this.records.push(data); 
    var id = this.records.length-1; 
    var node = {childIndex:id, data: this.records[id], firstChild: false, id:id, lastChild: false}; 
    this.gridOptions.api.grid.inMemoryRowController.rowsAfterMap.push(node); 
    this.gridOptions.api.rowRenderer.refreshView(id); 
    this.gridOptions.api.hideOverlay(); 
} 
0

Récemment, j'ai remarqué une nouvelle fonction this.gridOptions.api.updateRowData(Tranactions). Vous passez un objet avec trois tableaux:

var transactions = { 
    add: [/*array of records you want to add.*/] 
    remove: [/*array of records you want to remove.*/] 
    update: [/*array of records you want to update.*/] 
} 

this.gridOptions.api.updateRowData(tranactions); 

Référence: https://www.ag-grid.com/javascript-grid-data-update/?framework=javascript. (Pour une raison quelconque sur cette page, ils appellent la fonction updateData mais cette fonction n'existe pas, mais elle s'appelle updateRowData.)