ag-grid 以编程方式选择行不突出显示

use*_*133 4 ag-grid ag-grid-ng2 ag-grid-angular

使用 Angular 4(打字稿),我有一些使用 ag-grid 12.0.2 的代码,如下所示。我要做的就是加载我的网格并自动(以编程方式)选择第一行。

:
this.gridOptions = ....
    suppressCellSelection = true;
    rowSelection = 'single'
:

loadRowData() {
    this.rowData = [];
    // build the row data array...
    this.gridOptions.api.setRowData(this.rowData);

    let node = this.gridOptions.api.getRowNode(...);
    // console logging here shows node holds the intended row
    node.setSelected(true);
    // console logging here shows node.selected == true

    // None of these succeeded in highlighting the first row
    this.gridOptions.api.redrawRows({ rowNodes: [node] });
    this.gridOptions.api.redrawRows();
    this.gridOptions.api.refreshCells({ rowNodes: [node], force: true });
Run Code Online (Sandbox Code Playgroud)

选择了第一个节点,但该行拒绝在网格中突出显示。否则,鼠标行选择工作得很好。此代码模式与此处的示例代码相同:https : //www.ag-grid.com/javascript-grid-refresh/#gsc.tab=0它不起作用

抱歉,我不允许发布实际代码。

小智 5

onGridReady 表示网格已准备好但数据尚未准备好。使用 onFirstDataRendered 方法:

<ag-grid-angular (firstDataRendered)="onFirstDataRendered($event)">
</ag-grid-angular>

onFirstDataRendered(params) {
    this.gridApi.getDisplayedRowAtIndex(0).setSelected(true);
}
Run Code Online (Sandbox Code Playgroud)

这将自动选择网格中的顶行。


小智 2

由于您想在页面加载时选择第一行,因此您可以在构造函数中执行操作。但是你的 gridApi 应该在 OnGridReady($event) 方法中初始化

 this.gridApi.forEachNode((node) => {
  if (node.rowIndex === 0) {
    node.setSelected(true);
 }
Run Code Online (Sandbox Code Playgroud)