У меня есть некоторый код в моей сетке, где я пытаюсь предотвратить событие двойного щелчка, вызывающее расширение / сворачивание строки дерева, и я не могу найти документацию, как это сделать где-либо. Причина, по которой я хочу сделать это, заключается в том, что, когда я дважды щелкаю ячейку, я хочу сделать ее редактируемой, но из-за некоторых технических потребностей мне нужно запустить 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
Так что сейчас я немного растерялся. Есть ли что-то, что я могу сделать? Заранее спасибо!