如何以编程方式选择焦点或将焦点设置到AG Grid中的特定行?

时间:2020-04-07 19:20:38

标签: angular ag-grid ag-grid-angular

我正在使用AG Grid显示从后端检索到的数据。当用户单击网格中的查看/编辑图标时,我会将呼叫路由到“详细信息页面”,以便用户可以编辑记录。

一旦他完成,我希望他能够回到网格中并返回到以前的位置。我想放光标或选择内容,而行用户只是单击并从中返回。

问题是实现这一目标的最佳方法是什么?我假设是使用row(node)id

我目前已经在使用网格过滤器等,因此返回时仅显示先前显示的数据。但是也可能存在项目超出当前滚动范围的问题。可以说它是125行,但我的默认设置是一次只能加载100行,因此该记录甚至不会在网格中加载。

1 个答案:

答案 0 :(得分:0)

首先,看看possible API methods的无限行模型

您需要确保您的行尚不存在(要决定要做什么,只需滚动或预加载+滚动即可),您可以通过getInfiniteRowCount

进行检查

喜欢:

if (this.gridApi.getInfiniteRowCount() < IndexOfYourRowHere)

,然后(如果尚未存在)通过setInfiniteRowCount方法预加载数据:

this.gridApi.setInfiniteRowCount(IndexOfYourRowHere, false);

,然后通过ensureIndexVisible进行滚动(在该行已存在的情况下,也是这种情况)

this.gridApi.ensureIndexVisible(IndexOfYourRowHere);

这就是您的逻辑:

if (this.gridApi.getInfiniteRowCount() < IndexOfYourRowHere) {
  this.gridApi.setInfiniteRowCount(IndexOfYourRowHere, false);
}
this.gridApi.ensureIndexVisible(IndexOfYourRowHere);

Demo

它的官方演示来自this page

P.S。是的,这里只有Indexes是可能的,因为这是网格理解操作的方式,因此您需要仔细地对结果进行排序(或只是准备)以实现目标。

更新

 let node = this.gridApi.getDisplayedRowAtIndex(YourIndex);
 node.setSelected(true)