ExtJs Grid通过渲染器中的ajax填充列

Posted

技术标签:

【中文标题】ExtJs Grid通过渲染器中的ajax填充列【英文标题】:ExtJs Grid populating a column through ajax in renderer 【发布时间】:2015-03-09 17:12:37 【问题描述】:

我有一个包含三列的 ExtJs 网格(第三列是状态)。前两列被加载以存储并填充到网格中。第三列取决于前两列。我无法为第三列创建新商店。

是否可以在渲染器中调用 ajax 来填充第三列?我知道渲染器是同步的。有什么办法可以做到这一点?任何例子都非常感谢。

function renderStatus(value) 
    var statusAjaxOnSuccessCallback = function (serverStatus) 
        //debugger;           

        grid.getStore().each(function (rec) 
           rec.set('Status', 'After Ajax');               
        );            
    ;
    callAjax(statusAjaxOnSuccessCallback);
    //return 'BeforeAjax';

【问题讨论】:

【参考方案1】:

只需以正常方式配置您的网格,将第三个网格列绑定到存储中第三列的 dataIndex。

每当您为商店中的行设置第三列的值时,您可以通过 AJAX 成功处理程序执行此操作,网格将自动更新并显示该新值。

【讨论】:

我添加了上面第三列的渲染器功能。我正在更新商店,但它没有反映在 UI 中。我错过了什么吗? 何时调用该 renderStatus 函数? columns: [ selectorModel, header: 'Name', width: 300, sortable: true, dataIndex: 'Name', renderer: renderName , header: 'Dept', width: 300, sortable: true, dataIndex: 'Dept', renderer: renderDept , header: 'Status', width: 250, sortable: true, dataIndex: 'Status', renderer: renderStatus ] 从上面粘贴的列映射中调用。【参考方案2】:

这是我解决问题的方法。

    订阅网格商店的加载事件。 在这种情况下,触发 ajax 查询以获取第三列的值。 在 ajax 查询的 onsuccess 事件中,更新网格的存储,值会自动呈现。 将网格 viewconfig 的 markDirty 设置为 false,以便该列不显示脏标记。

【讨论】:

以上是关于ExtJs Grid通过渲染器中的ajax填充列的主要内容,如果未能解决你的问题,请参考以下文章

如何在将字段渲染到 Extjs 中的网格之前修改字段

ExtJS Grid Panel 没有从存储中填充数据

使用 Ajax 调用的 Extjs Grid 分页不起作用

Extjs Grid 面板 - 渲染后更改 enableColumnHide 属性

Extjs Grid - 如何在渲染器函数中获取列的宽度

基于 extjs 网格中的另一个组合框填充字段