带渲染器的ExtJS Grid动态列

时间:2014-07-01 17:04:15

标签: extjs extjs4 extjs4.1 extjs4.2

我有一个网格(ExtJS 4.2.1),其中包含来自服务器的动态列。这很好用。

enter image description here

这是我从服务器获取JSON字段,列和存储数据后重新配置网格的代码:

var me = this,
            grid = me.getVacationView().down('[xtype=vacation.monthgrid]'),
            gridStore = grid.getStore();

        App.util.Ajax.request({
            url: '/api/holiday/GetHolidayData',
            method: 'GET',
            success: function(response, opts) {
                var obj = Ext.decode(response.responseText);
                if (obj.success) {

                    gridStore.model.setFields(obj.data.metaData.fields);
                    grid.reconfigure(gridStore, obj.data.metaData.columns);
                    gridStore.loadRawData(obj.data.storeData, false);
                }
            }
        });

在我的服务器中,我有列属性:

newColumn.renderer = "myRender";

所以这个值也在我的JSON中,但现在我不知道在我打电话的时候我必须在哪里放置“myRender”函数:

grid.reconfigure(gridStore, obj.data.metaData.columns);

我的列正确呈现。 (我需要根据其值填充单元格的背景。)

有任何线索吗?欣赏它。

1 个答案:

答案 0 :(得分:2)

名为renderer的字符串必须是Ext.util.Format的一部分。所以你需要:

Ext.define('App.util.Format', {
    override : 'Ext.util.Format',
    myRender : function() {}
});

如果你不能覆盖util.Format,作为替代方案可以eval on" renderer"重新配置之前的列。

如何编写渲染器来更改单元格值,请在此处说明:extjs change grid cell background based on value