AG Grid: обнаружение изменений и выдача предупреждений, когда пользователь пытается изменить другую строку, не сохраняя первую.

У нас есть новый проект в 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, UnsavedNodeIndex, 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))
    }

  }

1 ответ

Вы можете попробовать использовать onCellvalueChanged() вместо rowClick.

 onCellvalueChanged(event: any) {
    if (this.cellChangeCount === 0) {
      this.UnsavedNodeIndex = event.node.rowIndex;
      this.UnsavedNodeID = event.data.ID;
    }
Другие вопросы по тегам