Extjs 4.0.7使用新代理寻呼网格

时间:2015-05-13 11:04:04

标签: extjs proxy extjs4

我有一个带商店的传呼网格。我必须更改商店的代理,但是当我这样做并尝试重新加载网格时,它会提供加载掩码而不执行任何其他操作。你能救我吗?

这是原始商店:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

那是因为你实际上并没有创建一个Ajax代理,而是它的父类Ext.data.Proxytype不会在以下行中解释:

var newProxy = Ext.create('Ext.data.Proxy', {
    type: 'ajax',

您必须指定实际的班级名称:

var newProxy = Ext.create('Ext.data.proxy.Ajax', {

(而且,恕我直言,您最好使用新关键字new Ext.data.proxy.Ajax创建它,以便您尽早发现遗失的需求......)