我需要在ExtJS中创建一个动态gridpanel
。我使用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
}]
如何使用此列创建列?
答案 0 :(得分: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
。