【问题标题】:Changing store extraParams before grid sortchange event在网格 sortchange 事件之前更改存储 extraParams
【发布时间】:2013-07-17 13:13:31
【问题描述】:

要求

每次对网格数据进行排序 - 在事件执行之前,我想用新的排序属性的值更改存储 extraParams。就像如果我在 DESC 方向对列 Name 进行排序 - 在事件执行之前我想用 @987654324 覆盖商店的 extraParams @of Name 列和方向属性DESC

我的商店也将remoteSort 属性设置为true

我正在使用 ExtJS 4.2。

问题

我在网格上尝试了sortchange 事件侦听器,但它在调用数据 API 并加载记录后执行。我想要的是像 beforesortchange 这样的东西。

这都是remoteSort : true

下一个问题是,如果我从 sortchange 调用 this.getStore().load();,那么我的数据 api 会被调用两次,这是没有意义的。

代码

网格监听器:

sortchange: function(ct, column, direction, eOpts) {
    this.getStore().getProxy().extraParams = {
        'sort'  : column.dataIndex,
        'dir'   : direction
    }
    //  load() will call the data api again once the data loading is over
    //this.getStore().load();
}

我也尝试过关注网格侦听器,但要么我没有获得新的网格排序参数,要么根本没有调用它们: beforeloadbeforesyncbeforeprefetchload

参考文献

https://stackoverflow.com/questions/12338407/custom-function-call-after-extjs-4-grid-sort/12338906#12338906

【问题讨论】:

    标签: extjs extjs4 extjs4.2


    【解决方案1】:

    在发送前使用beforeload 事件更改extraParam 对象:

    listeners: {
        beforeload: function(store, operation, eOpts){
            if(store.sorters && store.sorters.getCount())
            {
                var sorter = store.sorters.getAt(0);
                store.getProxy().extraParams = {
                    'sort'  : sorter.property,
                    'dir'   : sorter.direction
                };
            }
        }
    }
    

    【讨论】:

    • 对,它将排序和分页参数发送到服务器。但sort 参数是数组格式,不是我需要的。我可以访问无法修改的 API,并且需要不同格式的参数(sort=column,dir=asc|desc)。
    • 非常感谢,它确实像一个魅力 :) 但稍有变化,extraParams 是代理的属性,因此 store.extraParams 应该是 store.proxy.extraParams。修改了你的代码。
    • 如果不需要发送排序参数,您可以轻松设置 sortParam: undefined
    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    相关资源
    最近更新 更多