javascript - 使用 api.updateRowData(transaction) 删除一行对数据源没有影响

标签 javascript transactions ag-grid ag-grid-angular

我有一个自定义单元格渲染器来删除给定的实体。

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 必须在我的方案中更新。

没有我可以使用的双向绑定(bind)吗?

最佳答案

要删除选定的行,请使用此代码,

 this.selectedNodes = this.GridOptions.api.getSelectedNodes();                   
 this.GridOptions.api.removeItems(this.selectedNodes);
 this.GridOptions.api.refreshView();    

现在选定的行将被删除。

关于javascript - 使用 api.updateRowData(transaction) 删除一行对数据源没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47266023/

相关文章:

nhibernate RollbackTransaction 以及为什么要在回滚后处理 session ?

clojure - Clojure STM 属于哪类事务模型?

angular - 无法在单元格渲染器中使用 ngIf

javascript - 如何为基于 youtube.com/embed URL 的链接添加类?

javascript - 如何在提交时清除输入值,同时将值添加到跨度区域?

android - 动画 fragment 和返回堆栈

javascript - AgGrid 自定义时间过滤器

angular - AG-Grid 与 Angular2。在 angular2 项目中安装 ag-grid 时出错

javascript - 图像的 src 属性内的 Javascript 范围

javascript - 使用 Javascript 在逗号分隔的字符串中查找新值