我正在使用 smart-table (1) 来允许用户从不同的页面中选择记录,这些记录显示在预览 div 中。
当前的问题是,当我从第一页选择一些记录,导航到秒,然后导航回第一页时,第一页中的选择不反映之前的选择。
如果将当前选择保存在名为 operatorSelection (2) 的地图中,我的第一次尝试是在 onChangedSource 事件 (3) 之后再次选择行,但即使在调用 multipleSelectRow() 之后,getSelectedRows() 也不会返回预期的行。
页面更改后还有其他方法可以保留选择吗?或其他方式从代码中选择行?
以下是代码片段:
(1) 注释html
<div class="col-lg-6">
<ng2-smart-table #grid [settings]="settings" [source]="source" (userRowSelect)="onUserRowSelect($event)">
</ng2-smart-table>
</div>
(2) 行选择组件代码
onUserRowSelect(event) {
console.log('on UserRowSelect', event, this.operatorSelection);
if (event.isSelected) {
this.operatorSelection.set(event.data.code, event.data);
} else {
this.operatorSelection.delete(event.data.code);
}
this.updatePreview();
}
(3)页面更改后我尝试更新选择的内容
ngAfterViewInit(): void {
this.table.grid.source.onChangedSource.subscribe(() => {
this.operatorSelection.forEach((row) => {
this.table.grid.source.data.forEach((element) => {
if (element.code == row.code) {
console.log('--- reselect ', row.code );
this.table.grid.multipleSelectRow(row);
console.log('*** selected ', this.table.grid.getSelectedRows() );
}
});
});
});
}