ExtJS-TreeGrid上的自定义列渲染器isn';不要被解雇

ExtJS-TreeGrid上的自定义列渲染器isn';不要被解雇,extjs,Extjs,我有一个ExtJS TreeGrid,我正在尝试向特定列添加一个自定义渲染器。不幸的是,它不起作用-事件没有被触发,也没有发出警告。我也找不到TreeGrid的API。还有其他人经历过吗 代码如下: var tree = new Ext.ux.tree.TreeGrid({ title: 'My Tree Grid', loader: treeLoader, columns:[{ header: 'Title',

我有一个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'
        }]
     });

谢谢

TreeGrid没有API,因为它是一个用户扩展(Ext.ux)。您必须查看源代码以了解更多信息。如果项目中没有源,请转到下一页:

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

我注意到
TreeGrid
扩展了
TreePanel
,这反过来又扩展了普通的
面板。这里似乎没有任何对
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'
    });
var tree=new Ext.ux.tree.TreeGrid({
标题:“核心团队项目”,
宽度:500,
身高:300,
renderTo:Ext.getBody(),
enableDD:true,
栏目:[{
标题:“任务”,
dataIndex:'任务',
宽度:230
},{
标题:“持续时间”,
宽度:100,
数据索引:“持续时间”,
对齐:'居中',
sortType:“asFloat”,
// ================================== //
//这将充当列渲染器
tpl:new Ext.XTemplate({duration:this.formatHours}){
时间:功能(五){
if(v<1){
返回数学四舍五入(v*60)+“分钟”;
}否则如果(数学楼层(v)!==v){
var min=v-数学楼层(v);
返回数学楼层(v)+“h”+数学圆(最小*60)
+“m”;
}否则{
返回v+'hour'+(v==1?'''s');
}
}
})
// ================================== //
},{
标题:“已分配给”,
宽度:150,
数据索引:“用户”
}],
dataUrl:'treegrid data.json'
});

尝试使用XTemplate实现您的目的。如果这不能满足您的需要,您将不得不提供更多信息。

非常感谢McStretch,XTemplate会很好地完成这项工作。谢谢你挖得更深;没有意识到我在使用一个用户扩展。没问题,艾伦。很难看到“ux”夹在名称空间之间,即使如此,也不清楚它是否意味着“用户扩展”。