ExtJs 4.1 网格远程排序客户端事件

Posted

技术标签:

【中文标题】ExtJs 4.1 网格远程排序客户端事件【英文标题】:ExtJs 4.1 grid remote sort client side event 【发布时间】:2015-02-24 12:35:50 【问题描述】:

我正在使用 ExtJs 4.1 网格。我在商店中启用了remoteSort 并为列启用了sortable 属性。每次我对列标题进行排序\单击时,都会调用服务器,并在查询字符串中传递排序参数。

我想知道是否有一个客户端事件,它在调用服务器之前被触发?我想检查某些条件,并在此基础上取消对服务器的调用。

请提出建议。

【问题讨论】:

【参考方案1】:

每当您对网格进行排序时,都会触发一个 sortChange 事件。

请参阅文档here。

我创建了一个fiddle 演示,每次对网格进行排序时都会记录到控制台。它应该会有所帮助。

如果这不起作用,您可能需要附加到商店 beforeSort 或刷新事件。

编辑:由于 ExtJs 版本 4 没有 beforeSort 事件,您可能需要收听 refresh 事件:

Refresh:当数据缓存以批量方式发生更改(例如,它已被排序、过滤等)并且使用此 Store 作为记录缓存的小部件应刷新其视图时触发。

【讨论】:

我试过了,但是在服务器端调用后它被解雇了!!!!要么同时进行调用(服务器端和客户端一起),要么首先进行服务器端调用。当用户对任何列进行排序时,我想更改我们发布到服务器的数据。 再次更新 :) 对不起,我忘了你使用 ExtJs 4 数据刷新后调用stores刷新事件。这意味着在排序时,应用程序已调用服务器并且服务器已返回数据。在将数据发送到服务器之前,我想在客户端编辑要发布的数据(在排序事件中发送到服务器) beforesync 应该明白这一点 @Sciptable:这无济于事。当我创建网格系统时,将一些数据(输入)发布到服务器。基于这个输入数据,服务器返回一些输出。现在,当用户对列进行排序时,默认将相同的输入数据与排序参数(作为查询字符串)一起发布到服务器。我想要的是,我想编辑我网格自动发布到服务器的输入数据。为此,我需要找到一个允许我编辑输入数据的客户端事件。稍后我可以使用grid.getStore().proxy.msgBody 属性进行更新,然后这些数据将发送到服务器。

以上是关于ExtJs 4.1 网格远程排序客户端事件的主要内容,如果未能解决你的问题,请参考以下文章

网格中的 Extjs 远程排序

ExtJs - 基于远程数据的分页和缓冲网格,没有远程分页和过滤

如果网格为空,Extjs 4 禁用排序

Extjs4-在加载网格后为列提供默认排序

ExtJS4 网格不会更新远程数据库

为啥我的 ExtJS 4.2 网格面板排序不起作用?