如何在缓冲网格中设置加载存储

时间:2017-12-11 07:38:37

标签: javascript extjs extjs6

我有一个网格商店,我正在使用Ext.data.Store并加载该值。下面是我通过store.on(load)发送请求,获取数据和加载的方法。

myGridStore: function(myXml) {
        var me = this,store;
        me.setLoading(true);
        store = new Ext.data.Store({
            proxy: new Ext.data.proxy.Ajax({
                actionMethods: { 
                    read: 'POST'
                },
                url: 'someUrl',
                headers: {
                    'Accept': 'text/xml; charset=utf-8'
                },
                reader: {
                    type: 'xml',
                    record: 'I',
                    rootProperty: 'R'
                },
                extraParams: {
                    strIPXML: myXml
                }
            }),
            sortOnLoad : true,
            autoLoad: true,
            remoteFilter: false,
            multiSelect: true,          
            fields: me.fields,
        });
        store.on('load', function(thistore, records , successful , operation , eOpts){
                me.store.loadData(thistore.data.items);
        });

        return store;
    },

现在我想要我的商店bufferedStore所以为此我将Ext.data.Store更改为Ext.data.BufferedStore但是在bufferedStore中我无法使用store.on(load)就像我对代码进行了评论,下面是代码然后网格正在加载。但是当我第二次应用myXml时,我无法设置数据,因为store.on(load)无效。

myGridStore: function(myXml) {
        var me = this,store;
        me.setLoading(true);
        store = new Ext.data.Store({
            pageSize: 100,
            leadingBufferZone: 100,
            proxy: new Ext.data.proxy.Ajax({
                actionMethods: { 
                    read: 'POST'
                },
                url: 'someUrl',
                headers: {
                    'Accept': 'text/xml; charset=utf-8'
                },
                reader: {
                    type: 'xml',
                    record: 'I',
                    rootProperty: 'R'
                },
                extraParams: {
                    strIPXML: myXml
                }
            }),
            sortOnLoad : true,
            autoLoad: true,
            remoteFilter: true,
            fields: me.fields,
        });
        /*store.on('load', function(thistore, records , successful , operation , eOpts){
                me.store.loadData(thistore.data.items);
        });*/

        return store;
    },

任何人都可以帮助我如何使它工作。如何在bufferedStore中设置数据,我可以在Ext.data.store

中轻松设置

错误:可能无法在缓冲存储上使用LoadData - 存储是远程数据的映射

1 个答案:

答案 0 :(得分:1)

store.load事件的ExtJS文档说:

  

注意:如果您使用的是缓冲存储,则应使用预取。

您是否尝试将功能移至预取事件以查看是否适用于您?

...
store.on('prefetch', function(...