使用AG Grid,我需要在单击时制作一个带有行选择的表格,但是单击某些单元格不会导致选择该行。
到目前为止,我最好的主意是当鼠标悬停在非选择单元上方时,禁用单击行选择。像这样:
gridOptions.onCellMouseOver = (event) => {
if (/*cell is from non-select column*/ )
this.gridOptions.suppressRowClickSelection = true;
}
gridOptions.onCellMouseOut = (event) => {
if (/*cell is from non-select column*/ )
this.gridOptions.suppressRowClickSelection = false;
}
唯一的问题是onCellMouseOver和Out似乎没有及时触发。如果您从选择行快速转到在非选择单元格内单击,行选择仍将触发。我有一个附加的onCellClicked函数,该函数会触发并显示gridOptions.suppressRowClickSelection设置为预期的true,但是似乎单击速度太快时该属性未及时设置。
如果有人知道解决onMouseOver计时问题的方法,我很想知道。或者,如果总体上有更好的方法来实现此功能,我将不知所措。
谢谢
答案 0 :(得分:0)
我使用此替代方法是因为我需要单击全宽行,但是单击第一列后我应该导航
<ag-grid-angular (gridReady)="onGridReady($event)" (rowClicked)="onRowClick($event)">
onRowClick(params: RowClickedEvent) {
if(this.gridApi.getFocusedCell().column.getColId() === 'number'){
this.goToItem(params.data.id);
return;
}
//Other row logic
}
当然,您必须定义示例中定义的gridAPI变量。
gridApi: GridApi;
gridColumnApi: ColumnApi;
onGridReady(params: any) {
this.gridApi = params.api;
this.gridColumnApi = params.columnApi;
}