Ag-Grid Предотвращает расширение / свертывание дерева при двойном щелчке по ячейке - PullRequest
2 голосов
/ 10 апреля 2020

У меня есть некоторый код в моей сетке, где я пытаюсь предотвратить событие двойного щелчка, вызывающее расширение / сворачивание строки дерева, и я не могу найти документацию, как это сделать где-либо. Причина, по которой я хочу сделать это, заключается в том, что, когда я дважды щелкаю ячейку, я хочу сделать ее редактируемой, но из-за некоторых технических потребностей мне нужно запустить gridApi.redrawRows(), когда происходит свертывание / развертывание, которое вызывает поле редактирования потерять фокус, то есть я никогда не смогу редактировать ячейку двойным щелчком мыши.

Я использую следующие версии модуля ag-grid

"ag-grid-angular": "^22.1.1",
"ag-grid-community": "^22.1.1",
"ag-grid-enterprise": "^22.1.1"

И соответствующие html в моей сетке выглядит следующим образом

<ag-grid-angular
        #agGrid
        class="ag-theme-balham"
        [modules]="modules"
        [columnDefs]="columnDefs"
        [rowData]="rowData"
        [treeData]="true"
        (rowGroupOpened)="onRowGroupOpened($event)"
        (cellDoubleClicked)="handleCellDoubleClicked($event)"
        [getDataPath]="getDataPath"
        [defaultColDef]="defaultColDef"
        [frameworkComponents]="frameworkComponents"
        [autoGroupColumnDef]="autoGroupColumnDef"
        (gridReady)="onGridReady($event)"
        [getRowNodeId]="getRowNodeId"

      >
</ag-grid-angular>

В моем файле компонента конкретный столбец, отвечающий за автоматическую группировку строк в древовидном формате, выглядит следующим образом

ngOnInit() {
   this.autoGroupColumnDef = {
      editable: this.isAllowedtoEdit,
      headerName: "Account #",
      sortable: true,
      lockPosition: true,
      resizable: true,
      field: "accountNum",
      filter: "agGroupCellRenderer",
      cellRendererParams: {
        suppressCount: true,
        innerRenderer: 'AccountNameColumnDisplayer',
      },
    };
}

И функция для обработки двойной щелчок на ячейке таков:

handleCellDoubleClicked(cell) {
    if(cell.column.colDef.field === 'accountNum') {
      cell.event.stopPropagation();
      return false;
    }
  }

Моя handleCellDoubleClicked() функция, похоже, ничего не делает. Он работает, но строка все еще расширяется / сворачивается, когда я дважды щелкаю.

Я даже попробовал это, просто чтобы посмотреть, что это будет делать, и это вызывало действительно странное поведение

handleCellDoubleClicked(cell) {
    if(cell.column.colDef.field === 'accountNum') {
      cell.node.setExpanded(false)
    }
  }

И, наконец, когда я пытаюсь сосредоточиться на

handleCellDoubleClicked(cell) {
    if(cell.column.colDef.field === 'accountNum') {
      setTimeout(() => {
         this.gridApi.startEditingCell({
           rowIndex: node.rowIndex,
           colKey: 'accountNum'
         });
      }, 125);
    }
  }

В консоли появляется предупреждение о том, что ag-grid не распознает столбец accountNum

Так что сейчас я немного растерялся. Есть ли что-то, что я могу сделать? Заранее спасибо!

1 Ответ

1 голос
/ 21 апреля 2020

Вы должны иметь возможность добавить следующее свойство к вашему cellRendererParams , чтобы добиться этого:

cellRendererParams: {
        ...yourOtherParams,
        suppressDoubleClickExpand: true
    }

Приветствия!

...