【问题标题】:ExtJS Grid Dynamic Columns with Renderer带有渲染器的 ExtJS 网格动态列
【发布时间】:2014-08-22 08:05:58
【问题描述】:

我有一个带有来自服务器的动态列的网格 (ExtJS 4.2.1)。这工作得很好。

这是我从服务器获取 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);
                }
            }
        });

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

newColumn.renderer = "myRender";

所以该值也在我的 JSON 中,但现在我不知道我必须在哪里放置“myRender”函数,所以当我调用时:

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

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

有什么线索吗?欣赏它。

【问题讨论】:

    标签: extjs extjs4 extjs4.1 extjs4.2


    【解决方案1】:

    命名渲染器的字符串必须是 Ext.util.Format 的一部分。所以你需要:

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

    如果您无法覆盖 util.Format,则可以在重新配置之前对“renderer”列进行 eval。

    如何编写渲染器来改变单元格值,这里解释:extjs change grid cell background based on value

    【讨论】:

    • 太棒了,太棒了!!多谢 :)。是否可以禁用此渲染器功能内的单元格?谢谢
    • 我认为最好的方法是将其渲染为空(在渲染器中返回''):P
    • 完美...我的应用程序是 MVC,在哪里放置 Ext.define('App.util.Format') 的正确位置?欣赏它(对不起,我是 Extjs 的新手)
    • Your_App_ClassPath/util/Format.js ,接下来将 requires: ['App.util.Format'] 添加到您的网格或控制器
    • 如果您的应用不在 App 命名空间中,请将 App 更改为有效或运行 sencha app refresh
    猜你喜欢
    • 2012-06-12
    • 2011-11-17
    • 1970-01-01
    • 2011-11-08
    • 2014-08-06
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 2013-11-25
    相关资源
    最近更新 更多