2012-05-02 2 views
2

저는 오랫동안 그것을 찾고 있었으며 (내 자신의 관점에서 볼 때) 이것은 오랫동안 행해져 야하는 기본적인 행동입니다 전에 : "NAME"열을 기준으로 표를 정렬하고 레코드를 수정하면 "ZZZ"이라는 이름이 서버에 전송되고 서버는 "ZZZ"으로 "ok"로 응답하므로 값은 업데이트되었지만에 으로 유지됩니다. 즉, 정렬 순서가 새로 고쳐지지 않습니다.ExtJS : DataGrid : 로딩 한 후 정렬/새로 고침을 다시 적용하십시오.

자동으로이 작업을 수행 할 수있는 방법이 있습니까? 어떤 이벤트, 어떤 코드? 방법?

답변

0

저는 Sencha's forum에 대해 물어 보았습니다. 역사상 처음으로 나는 stackoverflow에 대한 해답을 얻었습니다. 그래서, 대답을 공유하고, 여기서 일하는 내 코드입니다 :

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) 사용자 정의 하드 코딩 된 물건을 만들 필요가 없습니다 Abdel과 마찬가지로 (Abdel의 대답은 특정 코드에서 한 번만 사용하기에 더 적합 할 수도 있지만).

+0

실제로 코드를 이해할 수 없습니다. 너에게 설명을 추가하면 좋을 것이다. – Praveen

3

서버에서 "ok"를 얻으면 명시 적으로 store 메소드를 호출 할 수 있습니다. 뭔가 같은 :

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

또는 당신은 당신이 가게로 sorters 재산의 사용이 가능하게 수있는 열을 정렬의 모음이있는 경우. 좋아요 :

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

희망이 있습니다.

+0

나를 위해 +1 myStore.sort ("name", "ASC"); '첫 번째 솔루션은 완벽하게 작동합니다. 너는 그렇지 않다. 나는 2 인자에 약간의 버그가 있다고 생각한다. ext.js에 익숙하지 않아서 알아낼 수 없었습니다. 나는 그것을 시도하고 그것을 발견, 당신을 알려 드리겠습니다. 어쨌든 감사합니다. – Praveen

+2

@Praveen 두 번째 해결 방법은 다음과 같이 상점에 분류기를 정의해야합니다.'sorters : [{property : 'name', direction : 'ASC'}]' – stambikk

관련 문제