微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在初始化 Angular-slickgrid Tree 时直接显示来自 Db 的数据,而不是仅在单击行标题后显示

如何解决如何在初始化 Angular-slickgrid Tree 时直接显示来自 Db 的数据,而不是仅在单击行标题后显示

我的第一个问题,如果我做错了什么,请接受我的道歉;-)

我正在创建一个使用 angular-slickgrid Tree 的 web 应用程序,以便显示来自数据库的一些数据。 创建树本身是有效的,我通过使用承诺从后端获取这些数据,因此从我的数据库获取这些数据。 为此,我特别扩展了 angular-slickgrid 的“示例 29:树数据(来自分层数据集)”。我的版本是 2.30.2,Angular 版本是 11.2.12,Typescript 4.1。

我的问题是,这些数据不会自动显示在树中,而是在我点击行标题之后……所以这些数据确实到达了前端! 不幸的是,我无法找出确切触发了哪个事件(在 Web 调试器和检查器中查看)。

有人说,实际上它应该通过将我的 db-data 提供给所谓的“datasetHierarchical”变量(在它们到达前端之后)来工作,因为 html '[datasetHierarchical]="datasetHierarchical" 中有一个赋值'。对于直接在 Tree-Component 中的模拟,这是有效的。 但是在我使用来自数据库的数据的情况下,这并不像我尝试过的所有方法一样有效,例如“this.angularGrid.sortService.sortLocalGridByDefaultSortFieldId();”或“this.angularGrid.gridService.invalidateHierarchicalDataset(this.datasetHierarchical);”,我认为应该在我的数据到达前端后重新渲染树网格。

这种微不足道的事情不起作用有点令人沮丧,但也许其他人看到了我监督的(一个简单的)解决方案...... 所以提前感谢您的任何帮助! :-)

而且数据请求也很简单:

getDataFromDB(): Promise<Array<any>> {
    return this._host.get<any>("data").toPromise();
}

此外,我还证明了数据是否真的到达前端:是的!

ngOnInit(){
    this.defineGrid();
    this._service.getDataFromDB().
    then((data) => {
      if (data !== undefined && data !== null && data.length > 0) {
        this.datasetHierarchical = data; 
    }});
}

在我的 html 中:

<angular-slickgrid class="grid" gridId="grid29"
                    [columnDeFinitions]="columnDeFinitions"
                    [gridOptions]="gridOptions"
                    [datasetHierarchical]="datasetHierarchical"
                    (onAngularGridCreated)="angularGridReady($event)">
</angular-slickgrid>

解决方法

感谢您的帮助,但我仔细查看了 lib 后找到了解决方案。 我猜超时工作不正常,所以我在我的数据从数据库到达后添加了一个:

this.datasetHierarchical = data; 
setTimeout(() => {
this.angularGrid.sortService.sortLocalGridByDefaultSortFieldId();
},50);

现在,当我启动应用程序时,数据库中的所有数据都会自动显示:-)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。