如何使DataTable从EXTERNAL SELECTION中选择/突出显示,而不将重点放在datatable上?

问题描述 投票:0回答:1

根据我的观察,这不是重复的帖子,找不到具有外部状态更改的任何内容。我已经在这个主题上搜索了几天或之后。

我正在做的是下面的事情。

我的UI上有DataTable和Map。数据表列出了地图上的数据点。

我可以在DataTable上进行选择和多选,这会突出显示数据表上的行,并与地图交互并绘制突出显示的数据点。我遇到的问题是,当我使用地图选择DataTable时,并没有反映出与地图上该数据点对应的所选行,直到我将鼠标悬停在DataTable上(假设在后台触发某种形式)刷新。我不必单击或在DataTable中执行任何操作,它只是自动触发自身,然后显示我在地图内选择的所有点。

html页面绑定到[selected]的变量已被正确调用并已设置其值,直到鼠标进入DataTable区域,它才反映行上的高亮显示。我无需单击或执行任何操作来触发它,只要鼠标进入该区域,它便会自行执行。

此外,我还尝试过手动设置表格的选定值,例如

this.tableRef.selected = this.newRowSelection;

所以我的问题是当我进行外部选择时,如何使数据表自动显示?

我不想删除表并重绘 DataTable,因为我认为它不会创建好的UX。

赞赏与此有关的所有输入。

================================================= =======

更新:2020年3月3日星期三

因此,在进行了更多测试和调试之后,我可以确认我确实将datatable.selected值设置为应选择的行的[]。

但是,再次将行不要突出显示,直到将鼠标悬停在数据表上。

有人对如何使数据表自动突出显示有任何建议吗?

================================================= =======

angular angular-datatables ngx-datatable
1个回答
0
投票

很难确定,没有可复制的示例,但是我认为这是因为您正在更新角度范围之外的属性,这可能是因为单击了未按角度方式绑定的地图。

尝试将所做的修改包装到setTimeout中>

setTimeout(()=> this.tableRef.selected = this.newRowSelection);

或明确通知角度再次运行更改检测

import {ChangeDetectorRef} from '@angular/core';
constructor(private cdr: ChangeDetectorRef) {}
//....
this.tableRef.selected = this.newRowSelection;
this.cdr.detectChanges();

您也可以在角度区域内执行操作

import {NgZone} from '@angular/core';
constructor(private ngZone: NgZone) {}
//...
this.ngZone.run(() => this.newRowSelection);
© www.soinside.com 2019 - 2024. All rights reserved.