我有一个自定义单元格渲染器来删除给定的实体。
root:root
它实际上从GUI中删除了该行。没问题。
但是当用户使用以下逻辑添加另一行时;
chmod o+rwx
已删除的行也会在网格中再次显示。这意味着 dataSource 对象未更新。
我在这里做错了什么?必须在我的方案中更新 dataSource 。
我可以使用双向绑定吗?
答案 0 :(得分:0)
Ag-grid会复制您提供给它的数据。因此,当您使用updateRowData
时,ag-grid将更新它拥有的数据,而不是原始数据数组。这是一个很好的设计,可以避免意外结果和原始数据的丢失。
您的问题有两种可能的解决方案:
在您需要更新数据时随时改变您的原始数据 - 这可能会非常快速地变得非常混乱
---或---
使用ag-grid的内置功能,允许它更新行数据,然后当你需要对dataSource做一些事情(比如在excel中下载或发送到其他一些函数)时使用{{ 1}}用于获取ag-grid知道的数据的函数。
答案 1 :(得分:0)
要删除所选行,请使用此代码
this.selectedNodes = this.GridOptions.api.getSelectedNodes();
this.GridOptions.api.removeItems(this.selectedNodes);
this.GridOptions.api.refreshView();
现在选中的行将被删除。
答案 2 :(得分:0)
对于遇到这篇文章的任何人,我早就知道了,但是。
我不得不在没有选择UI的情况下将一个表中的一行添加到另一个表中并将其删除
假设我们有一个带有通用columnDefs的网格,例如headersName,字段(重要的是具有字段)等。
我们将有2列:
from pyspark.sql.types import *
from pyspark.sql.functions import *
a={"id": "D1", "class": "WARRIOR", "archetype": "Pirate Warrior", "matches": 140000,
"duration": 6.2, "turns": 7.5, "winrate": 58.0, "cards": [["DRG_024", 2],
["CS2_146", 1], ["EX1_409", 1]]}
df=spark.createDataFrame([a])
df.withColumn("t",array_contains(flatten("cards"),"CS2_146")).where(col("t")=="true").show()
我所做的是:
{
headerName: 'Name',
field: 'name',
cellRenderer: params => params.data.name,
....
},
{
headerName: 'Age',
field: 'age',
cellRenderer: params => params.data.age,
....
},
添加/删除:[项目]-必须为数组
如果由于某些原因需要刷新(有时更改检测器不更新),则有2次AgGrid刷新options:刷新单元格和重新绘制行 ..在这种情况下,我将使用refreshCells()
this.gridApi.refreshCells({force:true});
this.gridApi2.refreshCells({force:true});
const item = {
'name': 'New name',
'age': 25,
}
* Remove a row - if the grid already have this item
this.gridApi.updateRowData({ remove: [item] });
* Add row - if the grid doesn't have it
gridApi2 is your seconds grid table api
this.gridApi2.updateRowData({ add: [item] });
这对我有用。当然在这里我们假设我们有一个网格工作,例如(gridReady)=“ onGridReady($ event)”