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填充列的主要内容,如果未能解决你的问题,请参考以下文章