如何在 click Handler 函数上调用 AG-Grid 的 gridready 事件

Posted

技术标签:

【中文标题】如何在 click Handler 函数上调用 AG-Grid 的 gridready 事件【英文标题】:How to call gridready event of AG-Grid on a click Handler function 【发布时间】:2019-05-06 05:07:58 【问题描述】:

我正在我的组织中开展一个项目,我必须在其中实施 ag-grid。我知道 ag-grid 有一个 gridready 事件函数,它最初会触发并设置具有所有网格 api 属性的参数。我的行数据不断变化,它来自其他一些组件,我添加了一个处理程序(函数),我想再次调用 gridready 事件,它将我的行数据设置为最新值。问题是gridapi属性只会在第一次初始化,我想访问我的处理程序中的那些(gridapi)属性现在变得未定义,即使在网格初始化和范围丢失后如何访问gridapi属性。我没有确切的代码,我添加了一些代码快照来准确描述我的情况。

grid.component.ts

@Input() gridData

ngOnit()  


handler()  
want to call grid ready but params will be undefined ,how to set this gridapi properties.
gridready()


gridready(params) 
this.gridapi =params.api;
this.columnapi =params.clumnapi
this.gridapi.setRowData(this.gridData.rowData)
 

【问题讨论】:

【参考方案1】:

根据ag-Grid's documentation,Grid API(api 和 columnApi)只有在触发 gridReady 事件后才可用。

如果我正确理解您的问题,这是实现相同目标的另一种方法。

您可以尝试在自己的grid.component.ts 中添加一个局部变量isGridAPIReady 来跟踪该状态。

当 ag-grid GridReadyEvent 触发时,将 isGridAPIReady 设置为 true。

并最终使用网格 api 设置新的rowData

//grid.component.ts

@Input()
rowData: any[];

ngOnChanges(changes: SimpleChanges): void 
    if (this.isGridAPIReady && changes['rowData']) 
      this.gridOptions.api.setRowData(this.rowData);
    

希望对你有帮助!

【讨论】:

以上是关于如何在 click Handler 函数上调用 AG-Grid 的 gridready 事件的主要内容,如果未能解决你的问题,请参考以下文章

NET问答: 如何从 event 中移除所有的 handler ?

Android,通过Handler.post函数调用finish()

jQuery基本语法2

使用 click() 在 jQuery 中调用函数

Builder中的Click Handler不能应用于空白

VS.net (c#)如何调用另一个控件的事件