以下代码使用Ext.data.Store
检索包含表元数据(列标题)和表数据的JSON。后端PHP脚本工作正常,Ext.data.Store
包含有效的数据记录 - 我无法让它们“进入”网格本身。
API文档看起来好像我只是为store
定义了Ext.grid.GridPanel
属性,它将处理其余的属性。
注意:下面的代码与应用程序的其余部分是分开的。我们已经取消了这一部分,看看我们是否可以让网格正常工作,而不受其他应用程序的影响。
Ext.BLANK_IMAGE_URL = 'js/ext/resources/images/default/s.gif';
Ext.onReady(function() {
var columns = [];
var fields = [];
var tabPanel = new Ext.TabPanel({
renderTo: Ext.getBody(),
activeTab: 0,
height: 700
});
var queryHeaders = Ext.data.Record.create([
{name: 'id'},
{name: 'table'},
{name: 'field'},
{name: 'title'}
]);
var applicationStore = new Ext.data.Store({
autoLoad: true,
reader: new Ext.data.JsonReader({root: 'fields'}, queryHeaders),
url: 'http://localhost/aargh/index.php/applications/hardware',
listeners: {
'load': function() {
console.info(applicationStore);
applicationStore.each(function(r) {
this_column = [];
this_column['header'] = r.data['title'];
this_column['dataIndex'] = r.data['id'];
columns.push(this_column);
this_column = []
this_column['name'] = r.data['id'];
fields.push(this_column);
});
console.info(fields);
var queryFields = Ext.data.Record.create([fields]);
var queryStore = new Ext.data.Store({
autoLoad: true,
reader: new Ext.data.JsonReader({root: 'fields'}, queryFields),
url: 'http://localhost/aargh/index.php/query/execute/applications/hardware',
listeners: {
'load': function() {
console.info(queryStore);
tabPanel.add(new Ext.grid.GridPanel({
title: 'Hardware',
store: queryStore,
columns: columns,
autoHeight: true,
frame: true
}));
tabPanel.doLayout();
}
}
});
}
}
});
});
当我查看Firebug中的applicationStore
和queryStore
个对象时,我可以在applicationStore.data.items.#.json
和queryStore.data.items.#.json
中完美地看到预期的数据结果(当然,将#替换为记录数)。
有什么想法吗?
答案 0 :(得分:1)
var queryFields = Ext.data.Record.create([fields]);
的数组中创建了一个数组
将其更改为:var queryFields = Ext.data.Record.create(fields);
解决了问题。