我在init组件中编写了Ajax,我在this.store
中获取了所有需要的数据。
但我没有在我定义的网格中获得存储范围。由于我关闭了Ajax Success的支架,我不是。什么是正确的方法。
我的代码是:
initComponent: function() {
this.fields = [];
this.columns = [];
this.data = [];
this.store = [];
Ext.Ajax.request({
url: 'XML/1Cohart.xml',
scope: this,
timeout: global_constants.TIMEOUT,
method: "GET",
disableCaching: true,
failure: function(response) {
utils.showOKErrorMsg(sdisMsg.ajaxRequestFailed);
},
success: function(response) {
var datas = response.responseXML;
Ext.each(datas.getElementsByTagName("HEADER"), function(header) {
this.buildField(header);
this.buildColumn(header);
}, this);
Ext.each(datas.getElementsByTagName("G"), function (columnData) {
this.buildData(columnData);
this.fieldLength = this.fields.length;
this.record = [];
for (i = 0; i < this.fieldLength; i++) {
//debugger;
var fieldName = this.fields[i].name
this.record[i] = columnData.getAttribute(fieldName);
}
this.data.push(this.record);
}, this);
this.store = new Ext.data.ArrayStore({
fields : this.fields
});
this.store.loadData(this.data); // Getting correct data in this.store
},
});
在东面板的同一个init组件中我定义了网格。哪个列即将到来,但商店没有。
网格代码
{
xtype: 'panel',
region: "east",
header: true,
collapsible: true,
autoScroll: true,
//columnWidth: 0.5,
width: "30%",
hideBorders: true,
split: true,
items: [{
xtype: 'panel',
title: "Search Result",
height:500,
items: [{
xtype: 'grid',
itemid: 'ABC_GRID',
store : this.store,
autoHeight: true,
sm: new Ext.grid.CheckboxSelectionModel({singleSelect:true}),
frame: true,
columns : this.columns,
}]
}]
答案 0 :(得分:0)
在this.store
中加载数据后,获取网格并重新配置其商店
Ext.ComponentQuery.query("#ABC_GRID")[0].reconfigure(this.store);
对于ExtJs 3
我们需要使用Ext.getCmp()
,因为Ext.ComponentQuery.query
不受支持。需要将网格的id
属性定义为id:ABC_GRID
。
Ext.getCmp("ABC_GRID").reconfigure(this.store)
答案 1 :(得分:-1)
您可以调用grid.getview()。getStore(),而不是调用This.store,您将获得要加载数据的网格存储。