我认为您需要通过 Ajax 请求以不同方式获取数据。
// Should work also in newer ExtJS versions
Ext.create('Ext.grid.Panel', {
renderTo: Ext.getBody(),
width: 640,
height: 480,
store: new Ext.data.ArrayStore({
fields: ['id', 'val1', 'val2'],
data: []
}),
columns: [{
dataIndex: 'id',
text: 'Id'
}, {
dataIndex: 'val1',
text: 'Value #1'
}, {
dataIndex: 'val2',
text: 'Value #2'
}],
listeners: {
afterrender: function(grid) {
// Do an Ajax request
Ext.Ajax.request({
url: 'data1.log',
// Will go here, because there is no such file...
// When you provide a file it will be success and you can handle failure differently
failure: function(response) {
// responseText will be response.responseText on success
// this here is only a mock
var responseText = "id1\tval1a\tval1b\nid2\tval2a\tval2b\nid3\tval3a\tval3b",
data = [];
// Split your data on new lines and iterate
Ext.each(responseText.split('\n'), function (record) {
// Create an empty array
var item = [];
// Split your new line-split on tab and iterate
Ext.each(record.split('\t'), function (recordItem) {
// push to your new data item
item.push(recordItem);
});
// push to your data
data.push(item);
});
// load the store
grid.store.loadRawData(data);
}
});
}
}
});
我在 jsfiddle 上提供了一个示例:http://jsfiddle.net/4Lx818ua/
祝你好运。