【问题标题】:Ag-Grid edit data and sending to serverAg-Grid 编辑数据并发送到服务器
【发布时间】:2019-06-29 09:30:14
【问题描述】:

Ag-grid on angular 能够创建从本地 json 文件中获取数据的网格。 在编辑任何行时如何保存该数据,然后发送到服务器或可能的本地 json 文件??

简而言之,Ag-Grid 如何在编辑后保存行数据并在单击提交按钮时发送到服务器。 任何人如果在 Javascript 上实现了这个,请发表评论,将尝试在 angular 上使用它

请告诉我除了 ag-grid 是否还有其他最佳选择来实现此功能

【问题讨论】:

  • 您可以编辑数据吗?或者您在编辑和保存数据方面需要帮助吗?
  • @wentjun - 编辑我只是通过在每个 columnDefs 值下添加 'editable: true' 属性来进行。是的,我如何能够编辑数据并更改它,但不知道如何将新数据分别保存到每一行然后发送到服务器
  • 澄清一下,您只需要进行更改的行吗?还是要从整个网格中获取数据?
  • @wentjun - 最终看起来可行的任何东西都希望通过发送整个网格数据来更新后端的特定更改值
  • @OneLunchMan:是的 Angular + TypeScript

标签: angular typescript ag-grid


【解决方案1】:

如果您想监听特定行的特定更改,您可以在组件模板上定义 ag-grid 组件时使用 onCellValueChangedonRowValueChanged 事件绑定。

 <ag-grid-angular 
.
.
(gridReady)="onGridReady($event)"
(onRowValueChanged) = onRowValueChanged($event)
>

在您的 component.ts 上,每次您进行任何更改时都会触发 onRowValueChanged 方法

 export class YourComponent {
 private gridApi;
 private gridColumnApi;
   .
   . 
 onRowValueChanged: function(event) {
   console.log(event) // access the entire event object
   console.log(event.data) // access and print the updated row data
   const gridData = this.getAllData();
   // api call to save data

}

getAllData() {
  let rowData = [];
  this.gridApi.forEachNode(node => rowData.push(node.data));
  return rowData;  
}

onGridReady(params) {
  this.gridApi = params.api;
  this.gridColumnApi = params.columnApi;
}

【讨论】:

  • 伟大的 onRowValueChanged 属性有效,我在 chrome 控制台中获取该数据,但是如何在单击按钮提交时将整个网格更新数据发送到服务器??
  • 好的,我已经更新了我的答案。您必须使用this.gridApi.forEachNode(node =&gt; rowData.push(node.data)) 从网格中的所有行中获取数据。让我知道这是否有效?
  • 我已经更新了我的代码。 this.gridApi 现在应该定义
  • 在 html 中使用 (cellValueChanged)="onCellValueChanged($event)"。不要使用 onCellValueChanged
猜你喜欢
  • 2020-09-06
  • 2020-03-30
  • 2018-05-07
  • 1970-01-01
  • 2018-06-14
  • 2018-04-30
  • 2018-11-03
  • 2019-08-23
  • 1970-01-01
相关资源
最近更新 更多