我有一个带商店的传呼网格。我必须更改商店的代理,但是当我这样做并尝试重新加载网格时,它会提供加载掩码而不执行任何其他操作。你能救我吗?
这是原始商店:
var store = new Ext.data.JsonStore({
autoDestroy: true,
proxy: {
type: 'direct',
directFn: Ext.d.Class.Function,
extraParams: {
param: param
},
paramOrder: ['param', 'filter', 'start', 'limit', 'sort'],
reader: {
type: 'json',
root: "rows",
idProperty: 'id',
totalProperty: "all"
}
},
fields: fields,
remoteSort: true,
autoLoad: false,
sorters: sorters
});
原始网格:
var grid = Ext.create('Ext.grid.Panel', {
selModel: selmodel,
title: title,
flex: 1,
store: store,
columns: columns,
bbar: pager = Ext.create('Ext.PagingToolbar', {
store: store,
displayInfo: true,
displayMsg: '{1} / {2}',
emptyMsg: ""
})
//...
新代理:
var newProxy = Ext.create('Ext.data.Proxy', {
type: 'ajax',
paramsAsHash: false,
url: 'tasks.php',
actionMethods: {
read: 'POST'
},
extraParams: {
task: 'getItems',
id: id
},
reader: {
type: 'json',
root: "rows",
idProperty: 'id',
totalProperty: "all"
}
});
我尝试设置代理并加载商店,但它没有做任何事情。
grid.getStore().removeAll();
grid.getStore().setProxy(newProxy);
grid.getDockedItems()[2].store.setProxy(newProxy);
grid.getStore().load(); // fails, loading mask but no ajax
有什么想法吗?
答案 0 :(得分:1)
那是因为你实际上并没有创建一个Ajax代理,而是它的父类Ext.data.Proxy
。 type
不会在以下行中解释:
var newProxy = Ext.create('Ext.data.Proxy', {
type: 'ajax',
您必须指定实际的班级名称:
var newProxy = Ext.create('Ext.data.proxy.Ajax', {
(而且,恕我直言,您最好使用新关键字new Ext.data.proxy.Ajax
创建它,以便您尽早发现遗失的需求......)