如何清除存储并更新分页工具栏?

时间:2011-09-15 15:23:53

标签: extjs extjs4

当我点击搜索按钮重新加载具有不同参数的网格存储时,我需要将分页工具栏参数重置为"page""start""limit"

我该怎么做?

问题是,当我在下一页,并且我进行了新搜索时,我有参数page=2start=25limit=25 dirty,而我需要重置此项参数应用。

我的代码:

listeners: {
    click: function(){
        Ext.getCmp('GrlGio').getStore().removeAll();
        Ext.getCmp('GrlGio').store.load({
                params:{
                  mode: "RIC",
                  DataRicerca: dd,
                  Pit: Ext.getCmp('cmbPiattaforma').getValue()
                }
        });
    }
 }

谢谢!

11 个答案:

答案 0 :(得分:13)

在Ext 4中,我发现loadPage()非常适合重置数据存储并使分页工具栏返回到第一页。例如:

store.loadPage(1) // note: 1-based, not 0-based

答案 1 :(得分:6)

您可以手动重置参数

Ext.getCmp('GrlGio').getStore().getProxy().pageParam =1;
Ext.getCmp('GrlGio').getStore().getProxy().startParam =0;

然后进行商店加载。我知道它看起来硬编码,但它是我发现的唯一解决方案......

答案 2 :(得分:5)

试试这个 -

pagingToolbar.moveFirst();

答案 3 :(得分:4)

通过覆盖ext.data.store:

定义以下函数“resetStartParam”
Ext.override(Ext.data.Store, {

            resetStartParam:function(){

                //get the latest store options
                var storeOptions=this.lastOptions;

                if(storeOptions!=undefined){

                    //get the param names
                    var pn = this.paramNames;

                    //get the params from options
                    var params=storeOptions.params;

                    //change the param start value to zero
                    params[pn.start] = 0;

                    //reset options params with this new params
                    storeOptions.params=params;

                    //apply this new options to store options
                    this.storeOptions(storeOptions);
                    }
                }
    });

现在点击搜索按钮调用此功能:

Ext.getCmp('GrlGio').getStore().resetStartParam(); 

多数民众赞成。它应该有用。

答案 4 :(得分:4)

我知道这是一个老帖子,但我想我会加入我的便士工作。我正在使用EXTJS 4并遇到类似的问题。当我进行新的搜索时,页码等没有重置。我找到的解决方案似乎与导航栏一起使用,它自动使用商店的currentPage属性。我确实有一个轻微的奇怪的设置,但当我做一个新的搜索时,做这个.currentPage = 1对我来说很好

答案 5 :(得分:4)

Guys currentPage = 1为我做了诀窍

每次调用以下时加载商店之前 顺便说一下,我得到500个结果并加载缓存 分页是本地的,任何方式你可以在任何新的搜索之前尝试这个

                        var store = Ext.getStore('MyStoreS');
                        store.proxy.extraParams = { employeeId : searchStr};

                        store.currentPage = 1;

                        store.load();

答案 6 :(得分:3)

在你的处理程序中尝试这个

Ext.getCmp('gridpanel').getStore().removeAll();
Ext.getCmp('PagingToolbar').moveFirst();

之后,将您的搜索查询相应地加载商店

Ext.getCmp('gridpanel').getStore().load({params : { start : 0, limit : maxRecords, searchText : _searchText } });

希望有所帮助

答案 7 :(得分:3)

在removeAll()之后调用pagingToolbar.onLoad()。简单明了。

答案 8 :(得分:2)

以下是我通过分页实现搜索的方法。它只执行1个请求并刷新分页数据。

onExecuteSearch: function(){
  var params = this.getSearchForm().getForm().getFieldValues()
      , proxy = this.getSomeGrid().getStore().getProxy();

  proxy.extraParams = params;
  this.getPagingToolbar().moveFirst();
}

getFieldValues()文档:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.Basic-method-getFieldValues

有关代理“extraParams”的更多信息,请查看此处:ExtJs4 - Store baseParams config property?

答案 9 :(得分:1)

必须将页面大小更改为500以打印整个商店/网格,并且一旦打印,将网格恢复为原始页面大小25。

    // 500 records are now in the store and on the grid
    ux.core.grid.Printer.print(this.getOrderList());
    store.pageSize = this.displaySize;   // new page size is 25
    this.getPagingToolbar().doRefresh(); // equivalent of pressing a refresh button on the toolbar

诀窍 - 使用相同的分拣机/过滤器/ currentPage重新加载商店

答案 10 :(得分:1)

这项工作正常(正确刷新分页信息):

    myStore.removeAll();

    myStore.fireEvent('load', myStore, [], {});