微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AG网格:检测更改并在用户尝试编辑其他行而不保存第一行时发出警报

如何解决AG网格:检测更改并在用户尝试编辑其他行而不保存第一行时发出警报

我们在Angular 8中有一个新项目,我们正在使用AG Grid,现在用户希望如果有人编辑一行并且不保存将其移动到另一条记录/行而触发验证。 它应该说先保存您的数据。

我已经尝试过onRowChange功能,但是用户不希望在单击时触发验证,他们只希望在编辑某些内容时触发验证。

下面是我所做的示例代码,但这还没有完全达到目的,有人可以帮我吗? 我也尝试过onValueChange(),但没有用。

代码

    onRowClick(event: any) {
        if (this.cellChangeCount === 0) {
          this.UnsavednodeIndex = event.node.rowIndex;
          this.UnsavednodeID = event.data.ID;
        }
        

        this.commonAgGrid.commonAgGridfunc(event,this.gridApi,this.cellChangeCount,this.UnsavednodeIndex,this.newRowClicked,this.UnsavednodeID,this.colName);
          this.cellChangeCount++;
      }

  commonAgGridfunc(event: any,gridApi,cellChangeCount,UnsavednodeIndex,newRowClicked,UnsavednodeID,colName) {
    
    cellChangeCount = cellChangeCount == 0 ? 0 : cellChangeCount;
    cellChangeCount = newRowClicked == true ? 0 : cellChangeCount;
    if (cellChangeCount !== 0 && (UnsavednodeID != event.data.ID) && !newRowClicked) {

      if (typeof UnsavednodeID != "undefined") {
        this.alertService.info("Save data first.");
        setTimeout(() => this.alertService.clear(),2000);
        this.onBtStartEditing(gridApi,colName);
      }
    }
    if (newRowClicked == true && (UnsavednodeID != event.data.ID)) {
      gridApi.stopEditing();
      gridApi.setFocusedCell(0,colName);
      gridApi.startEditingCell({
        rowIndex: 0,colKey: colName,});
      gridApi.forEachNode(node => node.rowIndex == 0 ? node.setSelected(true) : node.setSelected(false))
    }

  }

解决方法

您可以尝试使用onCellvalueChanged()代替rowClick。

 onCellvalueChanged(event: any) {
    if (this.cellChangeCount === 0) {
      this.UnsavedNodeIndex = event.node.rowIndex;
      this.UnsavedNodeID = event.data.ID;
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。