ExtJS - TreeGrid上的自定义列渲染器未被触发

时间:2011-01-25 09:24:44

标签: extjs

我有一个ExtJS TreeGrid,我正在尝试将自定义渲染器添加到特定列。不幸的是它不起作用 - 事件没有被解雇,也没有发出任何警告。我也找不到TreeGrid的API。还有其他人经历过这个吗?

以下是代码:

    var tree = new Ext.ux.tree.TreeGrid({
        title: 'My Tree Grid',
        loader: treeLoader,
        columns:[{
            header: 'Title',
            dataIndex: 'title',
            width: 500
        },{
            header: 'Testing',
            width: 100,
            dataIndex: 'testing',
            renderer: function(value) {
              console.log('Test');
            },
            align: 'center'
        }]
     });

谢谢!

1 个答案:

答案 0 :(得分:5)

TreeGrid没有API,因为它是用户扩展(Ext.ux)。您需要查看源代码以获取更多信息。如果您的项目中没有源,请转到以下页面:

http://dev.sencha.com/deploy/dev/examples/treegrid/treegrid.html

点击“查看来源”Ctrl + U。从那里你可以链接到TreeGrid.js和其他支持js文件。

我注意到TreeGrid扩展了TreePanel,后者又扩展了普通的Panel。似乎没有对GridPanel的任何引用,因此我不相信如果您使用该组件,则会出现任何列渲染器。从我收集的内容来看,示例(tree-grid.js)使用XTemplate来渲染列数据:

    var tree = new Ext.ux.tree.TreeGrid({
        title: 'Core Team Projects',
        width: 500,
        height: 300,
        renderTo: Ext.getBody(),
        enableDD: true,

        columns:[{
            header: 'Task',
            dataIndex: 'task',
            width: 230
        },{
            header: 'Duration',
            width: 100,
            dataIndex: 'duration',
            align: 'center',
            sortType: 'asFloat',
            // ================================== //
            // this acts as your column renderer
            tpl: new Ext.XTemplate('{duration:this.formatHours}', {
                formatHours: function(v) {
                    if(v < 1) {
                        return Math.round(v * 60) + ' mins';
                    } else if (Math.floor(v) !== v) {
                        var min = v - Math.floor(v);
                        return Math.floor(v) + 'h ' + Math.round(min * 60) 
                            + 'm';
                    } else {
                        return v + ' hour' + (v === 1 ? '' : 's');
                    }
                }
            })
            // ================================== //
        },{
            header: 'Assigned To',
            width: 150,
            dataIndex: 'user'
        }],

        dataUrl: 'treegrid-data.json'
    });

尝试将XTemplate用于您的目的。如果这不符合您的需求,您将不得不提供更多信息。