ag-Grid 初始化后如何提供 cellEditorParams?

How do I supply cellEditorParams after ag-Grid has been initialized?

这是我在文档和在线讨论中看到的经典示例,用于向单元格弹出列表提供 'dynamic' 项目列表。但这并不是真正的动态。所有的值和关系都是提前知道的,并硬编码到源代码中。

cellEditor : 'agSelectCellEditor';
cellEditorParams: function(params) {
    var selectedCountry = params.data.country;
    if (selectedCountry==='Ireland') {
        return {
            values: ['Dublin','Cork','Galway']
        };
    } else {
        return {
            values: ['New York','Los Angeles','Chicago','Houston']
        };
    }
}

如果我 运行 正在扩展业务并且我每月将新城市添加到我在不同国家/地区设有公司办事处的列表中怎么办?每次获得新客户时,我都不能打电话给程序员。我需要一种方法在 运行 时间动态提供此列表,其中包含一组从应用程序数据库中获取的值 - 无法提前知道。

这可以做到吗?

我已经在此处记录了我为此所做的不成功的努力:

How do I Bind ag-Grid Dropdown to Array of Strings whose Values are not Known until Run Time?

如果您能在我的其他询问中帮助我在这里或那里回复,将不胜感激!

所以这是解决方案。全面披露——我不知道它是如何或为什么起作用的,但互联网又广又深,如果你撒网的时间足够长,你能挖到的东西是没有限制的。我在这里找到了解决方案:

该技巧适用于反应网格,但该解决方案对我有用。这是我的解决方案的代码:

这里是 returns 值列表的函数,我认为是 json 格式:

private getCategoryArray() {
    return {
        values: this.Categories
    }
}

这就是 'bound' 到 ag-Grid 列定义的方式,以便在 运行 时间动态提供值。关键是cellEditorParams的定义。

    {
        headerName: 'Category',
        field: 'payeeCategory',
        sortable: true,
        width: 100,
        checkboxSelection: true,
        editable: true,
        cellEditor: "agSelectCellEditor",
        cellRenderer: ActiveCellRenderer,
        cellEditorParams: this.getCategoryArray.bind(this)
    },

同样,我不知道这是如何工作的,也不知道为什么会这样。如果您想 post 解释这是如何工作的,我很乐意为您的解释点赞。谢谢!