我有一个存储在tempSelected
中的行ID数组,我想以编程方式将列表中的每一行设置为selected。这就是我正在尝试的:
let len = tempSelected.length;
this.gridApi.forEachNode(function (node) {
for(let i=0; i<len; i++){
if(node.id === tempSelected[i]){
node.setSelected(true);
}
}
});
在此循环结束时,我希望选择tempSelected
中的每一行,但是现在,只有tempSelected
数组中的最后一个id被选中,其余的未被选中。 / p>
我已经设置了rowSelection = 'multiple'
,所以它不应仅限于1个选择。我还尝试根据我读到的here on ag-grid's website将node.setSelected(true);
更改为node.setSelected(true, false);
,但这并没有改变结果。
如何一次选择多个节点?
答案 0 :(得分:1)
我猜测是因为您处理了ngOnInit
生命周期挂钩或ag-grid的gridReady
事件上的行突出显示。这两个事件都不适合,因为初始化完成后会触发ngOnInit
钩子,而当网格本身准备就绪(但尚未渲染数据)时就会触发gridReady
。
因此,为了安全起见,并假设要处理加载时的突出显示,应改用firstDataRendered
事件。
对于您的情况,可以将firstDataRendered
事件绑定到某种方法,例如onFirstDataRendered
。另外,请确保将rowSelection
绑定到multiple
以允许多个选择。
<ag-grid-angular
(firstDataRendered)="onFirstDataRendered($event)"
[rowSelection]="'multiple'"
// other events and props
></ag-grid-angular>
在您的component.ts上,
onFirstDataRendered(params) {
let len = tempSelected.length;
this.gridApi.forEachNode(node => {
for (let i=0; i<len; i++) {
if(node.id === tempSelected[i]){
node.setSelected(true);
}
}
});
}
我已经在here上创建了一个演示。