1

我需要gridpanel在 ExtJS 中创建一个动态。我actioncolumn为此使用一个:

handler: function(view, rowIndex, colIndex, item, e) {
    var tabs = Ext.getCmp('northPanel');
    var rec = view.getStore().getAt(rowIndex);

    modelFactory(rec.get('Reference'), rec.get('ResultFields'));

    console.log(rec.get('ResultFields'));
    console.log('start adding tab');
    tabs.add({
        title: 'Report: ' + rec.get('Reference'),
        closable: true,
        dockedItems: [{
            xtype: 'toolbar',
            dock: 'top',
            items: [{
                xtype: 'tbfill'
            }, {
                xtype: 'button',
                text: 'Export report'
            }, {
                xtype: 'button',
                text: 'Refresh data'
            }]
        }],
        xtype: 'tabpanel',
        items: [{
            xtype: 'gridpanel',
            title: 'Gridview',
            forceFit: true,
            store: ND.store,
            columns: []
        }]
    });

    console.log('tab created');
},

现在我需要为这个网格创建列。我需要制作的列在rec.get('ResultFields'). 当我使用时,console.log()我在萤火虫中看到了这个:

[Object {
    name = "currentSimAllocationByCcu", type = "textfield", format = null
}, Object {
    name = "wanNumber", type = "textfield", format = null
}, Object {
    name = "carrierName", type = "textfield", format = null
}, Object {
    name = "dataPackageName", type = "textfield", format = null
}, Object {
    name = "simIccid", type = "textfield", format = null
}, Object {
    name = "expiryTime", type = "textfield", format = null
}, Object {
    name = "bytesRx", type = "textfield", format = null
}, Object {
    name = "bytesTx", type = "textfield", format = null
}]

我怎样才能用这个创建列?

4

1 回答 1

1

似乎有什么问题?

如果您在创建网格之前获得有关列的信息 - 然后根据您的字段数组创建一个或多个列。像这样的东西:

var _cols = [],
    _flds = rec.get('ResultFields');

Ext.Array.each(_flds, function(f) {
   _cols.push(Ext.create('Ext.grid.column.Column', {
      text: f.get('name'),
      dataIndex: f.get('name')
   }));
});

然后_cols在创建网格时使用它。

于 2012-04-11T12:31:57.207 回答