очистить выбранные значения ячеек диапазона при нажатии кнопки удаления - PullRequest
0 голосов
/ 18 июня 2020

Я хочу очистить все значения ячеек, которые находятся в выбранном диапазоне, нажав кнопку удаления клавиатуры. Может кто-нибудь сказать мне, как этого добиться?

enter image description here

1 Ответ

0 голосов
/ 22 июня 2020

Ниже приведено решение, если кто-то хочет добиться того же. Зарегистрируйте событие нажатия клавиши в функции обратного вызова onRangeSelectionChanged agGrid onRangeSelectionChanged={()=>{ window.addEventListener("keydown", this.handleDeleteOnRange)} Затем проверьте нажатие клавиши удаления в handleDeleteOnRange, получите выбранный диапазон ячеек с помощью api getCellRanges agGrid и удалите значения этих ячеек.

handleDeleteOnRange(event) {
    var cellRanges = this.gridApi.getCellRanges();
    var rowData = this.state.rowData;
    if ([46].indexOf(event.keyCode) > -1) { //delete key press
      cellRanges.map((range) => {
        if (range?.startRow?.rowIndex && range?.endRow?.rowIndex) {
          var startRow =
            Math.min(range.startRow.rowIndex, range.endRow.rowIndex);
          var endRow =
            Math.max(range.startRow.rowIndex, range.endRow.rowIndex);
          for (var rowIndex = startRow; rowIndex <= endRow; rowIndex++) {
            range.columns.forEach((column) => {
              if (column.colDef.field !== "row_id") {
                rowData[rowIndex][column.colDef.field] = "";
              }
            });
          }
        }
        this.setState({ rowData: rowData });
        this.gridApi.refreshCells();
      });
    }
  }

Это просто демонстрационный код, демонстрирующий, как это работает.

Не забудьте удалить eventListeners после того, как работа будет выполнена.

...