【发布时间】:2018-04-26 05:38:45
【问题描述】:
我有一个自定义单元格渲染器来删除给定的实体。
function ActionButtonsCellRenderer() {}
ActionButtonsCellRenderer.prototype.init = function(cellRenderParams) {
var tempDiv = document.createElement('div');
var deleteButton = document.createElement("a");
deleteButton.href = "javascript:void(0)";
deleteButton.innerHTML = "<i class='fa fa-trash'></i>";
tempDiv.appendChild(deleteButton);
deleteButton.addEventListener("click",function(){
cellRenderParams.api.updateRowData({remove: [cellRenderParams.data]})
});
this.eGui = tempDiv.firstChild;
};
ActionButtonsCellRenderer.prototype.getGui = function() {
return this.eGui;
};
它实际上从 GUI 中删除了该行。没问题。
但是当用户使用以下逻辑添加另一行时;
function addRow() {
var row = {t1 : "test"}
dataSource[dataSource.length] = row;
agGridOptions.api.setRowData(dataSource);
}
已删除的行在网格中也再次可见。这意味着 dataSource 对象没有更新。
我在这里做错了什么? dataSource 必须在我的场景中更新。
难道没有我可以使用的双向绑定吗?
【问题讨论】:
-
我知道这个问题已经有一段时间了,但你有没有想过这个问题?我正在做类似的事情,但我正在使用 Master/Detail 功能。当我展开另一个节点时,该行又回来了(尽管实际上是从实际的 DB 数据源中详细说明的)。当我修改其中一个 a-g 网格示例来执行此操作时,它工作正常,我似乎看不出有什么区别。
-
我想出了我的问题,以防万一有人遇到这个问题。我的与 Master/Detail 功能有关。删除行时,您必须从明细网格和主数据中删除。一旦我这样做了,我的行将不再出现在网格中。
标签: javascript transactions ag-grid ag-grid-angular