2012-05-02 60 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