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

时间:2017-09-05 17:13:36

标签: ag-grid-ng2

使用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 });

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

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

4 个答案:

答案 0 :(得分:2)

onGridReady表示网格已准备就绪,但 data 尚未就绪。 使用onFirstDataRendered方法:

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

onFirstDataRendered(params) {
    this.gridApi.getDisplayedRowAtIndex(0).setSelected(true);
}

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

答案 1 :(得分:0)

我有一个类似的问题,得出的结论是在加载行之前调用了onGridReady()。仅仅因为 grid 准备就绪并不意味着您的 rows 准备就绪。(我使用的是ag-grid社区版本19)解决方案是设置api事件处理程序数据加载后。出于演示目的,我将使用一个简单的setTimeout()来确保在与网格进行交互之前已经过去了一段时间。在现实生活中,您将需要使用一些在加载数据时触发的回调。

我的要求是处理程序在窗口调整大小时调整网格大小(与您不相关),并且单击或导航到单元格突出显示整行(与您有关),并且我还注意到与所选单元格未突出显示。

  setUpGridHandlers({api}){
    setTimeout(()=>{
    api.sizeColumnsToFit();
    window.addEventListener("resize", function() {
      setTimeout(function() {
        api.sizeColumnsToFit();
      });
    });
    api.addEventListener('cellFocused',({rowIndex})=>api.getDisplayedRowAtIndex(rowIndex).setSelected(true));
  },5000);
}

答案 2 :(得分:0)

执行此操作的是setSelected(true)

我们使用的是MasterDetail feature,它是一个嵌套的网格,在展开一行时,我们需要将选择内容更改为展开的内容。

扩展行已在

中处理
detailCellRendererParams: {
  getDetailRowData: loadNestedData,
  detailGridOptions: @nestedDetailGridOptionsFor('child'),
}

连同loadNesteddata一起,我们得到params的原因是可以选择扩展行为

params.node.parent.setSelected(true)

希望这会有所帮助。

答案 3 :(得分:-1)

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

public int countCode(String str) {
    int count = 0;
    String result = "";
    boolean yes = true;
    for (int i = 0; i < str.length(); i++) {
        // yes = str.charAt(i+3);
        if (str.length() >= 3) {
            if (str.charAt(i) == 'c' && str.charAt(i + 1) == 'o' && str.charAt(i + 3) == 'e')
                count++;
        }
    }
    return (count);
}