将现有grid.Panel转换为tree.Panel

时间:2016-03-25 11:32:24

标签: extjs

我有一个网格,它有动态列生成,我的问题是,在我创建它之后,我意识到我需要tree.Panel而不是grid.Panel具有相同的列。

代码非常简单:一个侦听器,一个控制器函数,用于生成用于重新配置视图的列数组。

现在这适用于grid.Panel,正在生成列,但不生成tree.Panel。我没有错误,没有任何指出我的错误......

grid.Panel:

enter image description here

tree.Panel:

enter image description here

视图:

Ext.define('x.view.valuegrid.valuegrid', {
    extend: 'Ext.grid.Panel', //old grid version
    //extend: 'Ext.tree.Panel', <-- not working

    requires: [
        'x.view.valuegrid.valuegridModel',
        'x.view.valuegrid.valuegridController'
    ],

    xtype: 'valuegrid',

    viewModel: {
        type: 'valuegrid'
    },

    controller: 'valuegrid',

    enableLocking: true,
    //useArrows: true,
    //rootVisible: false,

    listeners: {
        beforerender: 'loadColumns'
    }
});

viewController代码生成列:

    var columns = [];

//create first column
var firstColumn = {//xtype: 'treecolumn', 
                   text: firstColumnData.label,
                   width: firstColumnData.width,
                   menuDisabled: true,
                   locked: true};
columns.push(firstColumn);

//create dimension columns
for(i = 0; i < dimensions.length; i++){
    var dim = {text: dimensions[i].label,
               width: 150, //parseInt(dimensions[i].width),
               menuDisabled: true,
               locked: true};
    columns.push(dim);
}                       

//create value columns
for(i = 0; i < groups.length; i++){
    var group = {text: groups[i], menuDisabled: true};
    var valCols = [];
    for(j = 0; j < valueColumns.length; j++){
        if(valueColumns[j].group == groups[i]){
            valCol = {text: valueColumns[j].label, 
                      width: 75,
                      menuDisabled: true}
            valCols.push(valCol);
        }
    }
    group.columns = valCols;
    columns.push(group);
}          

//reconfigure new columns
grid.reconfigure(null, columns);  

1 个答案:

答案 0 :(得分:0)

解决了这个问题,我只需要添加columns: []来查看。 虽然我想知道,为什么这不是grid.Panel的问题?如果有人能够正确地向我解释,我会接受它作为答案。