2012-05-02 61 views
2

我一直在寻找它这么长的时间,(从我自己的角度),这是一个应该已经做了很基本的行为后重新应用排序/刷新前段时间:您按列进行排序网格,说“NAME”,修改记录,名称为“AAA”变成“ZZZ”,它发送给服务器,服务器回答“OK”与“ZZZ”这样的价值已经更新,但在同一个地方停留,即排序顺序不被刷新。ExtJS的:数据网格:加载

有没有办法自动做到这一点?哪个事件,哪个代码?怎么样?

回答

0

我问过的Sencha's forum并在历史上第一次我已经得到答案了,之前的计算器。所以,分享答案,这里是我的代码工作:

Ext.define('Ext.data.StoreHandleErrors', { 
    extend: 'Ext.data.Store', 
    alias: 'data.storehandleerrors', 

    constructor: function(config) { 
     this.callParent([config]); 

     this.on(
      'write', 
      function(me, opts) { 
       this.sort(); 
      }, 
      this 
     ); 
    } 
}); 

说明:我重写构造函数,以便每个“写”事件被称为每次也就是时间的记录被发送到服务器,这使我们始终相信这是正确刷新重新排序的商店。这是可能是“太多”的通用方法(=无需重新排序再次每个写),但(1)它适用于所有商店(2)无需进行定制硬编码的东西像阿卜杜勒建议(尽管阿卜杜勒的回答可能更适合于一个特定的一段代码,使其仅一次)。

+0

其实我无法理解你的代码。如果你为你添加一些解释,那会很好。 – Praveen

3

一旦你从服务器得到“OK”你可以显式调用存储方法。是这样的:

myStore.sort("name","ASC"); 

或者,如果你有排序的列的集合,你可以利用sorters财产的可用存储。像:

myStore.sort(myStore.sorters); // this uses the existing sorting rules applied to the store 

希望这会有所帮助。

+0

+1我'myStore.sort( “名”, “ASC”);'你的第一个解决方案完美的作品。而你秒不是。我认为你第二名在那里有一些错误。由于我是ext.js的新手,我无法弄清楚。我会试着找到它,我会让你知道的。不管怎样,谢谢。 – Praveen

+2

@Praveen对于第二个解决方案正常工作,你需要在这样的店里定义分拣机:'分拣机:[{属性:“名”,方向:“ASC”}]' – stambikk