ExtJS:Ext.grid.Panel:如何在store.sync()之后保持排序顺序?
我有一个很好用的 Ext.grid.Panel,其中的列标题可以单击进行“自动”排序。 商店有“autoSync:true”。 我有一个“新建”按钮,当用户单击它时,它会创建一个没有 id 属性的空记录:
onAddClick: function(){
this.down('#new').setDisabled(true);
var rec = new GroupeSynergies.data.Partenaire({
/* Valeurs par défaut des colonnes */
description: 'Nouveau partenaire'
});
this.store.insert(0, rec);
},
我将记录插入到 #0 位置,因为我知道它将是自动同步(这就是实际发生的情况)。 问题是:如果你点击“id”列,它会按id asc排序,如果你再次点击,则顺序相反。
然后单击“新建”按钮,它会创建空的新记录,将其发送到服务器,并获取 id 字段已完成的结果记录,更新网格,但是......不考虑排序:同步时,返回的 id 非常高,并且无论排序顺序如何,它都位于顶部。我做错了什么?
非常感谢
(PS,我在 stackoverflow 上询问,因为 Sencha 的论坛似乎人满为患)
I have a nice working Ext.grid.Panel, with column headers you can click on to "automatic" sort.
The store has "autoSync: true".
I have a button "new", when the user clicks on it, it creates an empty record without the id property:
onAddClick: function(){
this.down('#new').setDisabled(true);
var rec = new GroupeSynergies.data.Partenaire({
/* Valeurs par défaut des colonnes */
description: 'Nouveau partenaire'
});
this.store.insert(0, rec);
},
I insert the record in the #0 position, because I know that it'll be automatically synced (and that's what's happening actually).
The problem is: if you click on the "id" column, it's sorted by id asc, if you click again, reverse order.
Then you click on the button "New", it creates empty new record, sends it to the server, and gets the resulting record with the id field completed, updates the grid, but... don't take in account the sort: when it's synced, the returned id is very high and it stays on the top, no matter what the sort order is. What am I doing wrong?
Thank you very much
(PS I'm asking at stackoverflow because Sencha's forum seems to be overwhelmed)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在类似的情况下,我找到的解决方案是在商店的“write”事件处理程序中添加 store.sort 。
根据您的需要调整排序参数。 文档 “排序”方法。
如果您在商店的代理上设置了
writer
,则排序也会触发简单的“更新”。为了避免这种情况,您可以测试operation
参数的值。文档 “写”事件。
我不知道这是否是更好的方法,这是我目前找到的唯一方法。
In a similar situation, the solution I've found is to add a store.sort in the 'write' event handler of the store.
Adapt the sorting parameter to your needs. Documentation for the 'sort' method.
If you have a
writer
set on the proxy of your store, the sorting will also fire for a simple "update". To avoid this situation you can test the value of theoperation
parameter.Documentation for the 'write' event.
I don't know if it is the better way of doing it, it's the only one I've found for now.
这是另一个解决方案:
Here's another solution: