【问题标题】:Ext.JS is there a way of tracking sort events on a grid panel?Ext.JS 有没有办法在网格面板上跟踪排序事件?
【发布时间】:2012-11-02 15:53:09
【问题描述】:

我有两个表单域、一个选择列表和另一个网格面板。更改选择列表中的选择将触发其更改事件并触发网格面板侦听的名为datasourcechange 的自定义事件。这两个组件必须分开,因为它们在不同的表单中使用,并不总是一起使用。

问题是当我对网格面板进行排序时,它会获取未经过滤的记录列表。如果可用,我希望它重新应用选择列表中的过滤器。

我试过remoteSort: false,但我想我可以做一些类似于选择列表如何触发面板正在侦听的事件的事情,但我需要一种方法来确定何时单击列标题通过标题本身的排序事件或单击事件,有人可以为此推荐最佳实践方法吗?

我们使用的是 Extjs 4.0.5,无法升级到 4.1.x。感谢您提供任何帮助!

【问题讨论】:

  • 无法升级?是什么阻止了你?
  • 由于我们添加的覆盖以及从 4.0.5 到 4.1.X 的更改量,此时升级将涉及太多工作。它肯定在未来版本的列表中,但现在我们必须解决它。
  • 修复了很多错误,我猜很多覆盖都不需要。

标签: extjs extjs4


【解决方案1】:

这是一个常见问题。你要做的就是实现这样的东西:

  1. 在选择列表中更改选择时,将所选值保存在网格的存储中。

    var store = getGridStore(); // 你必须实现这个方法 store.selectedValue = theSelectedValue;

  2. 接下来,您必须订阅 store 的 load 事件才能在执行请求之前应用过滤器。是这样的:

    getGridStore().on('beforeload', function (store) { store.proxy.extraParams = { filtersByValue: store.selectedValue }, 这个);

我不知道你的实现如何,但这描述了一般的想法。

【讨论】:

  • 谢谢,这就是我最终采用的方法。
猜你喜欢
  • 2020-03-20
  • 2012-03-10
  • 2021-05-09
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多