AG网格-禁止在特定列/单元格内选择行

时间:2018-09-10 20:17:05

标签: typescript ag-grid

使用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计时问题的方法,我很想知道。或者,如果总体上有更好的方法来实现此功能,我将不知所措。

谢谢

1 个答案:

答案 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;
}