2012-01-20 5 views
2

EXTJS 그리드를 사용하여 페이지 매김이있는 체크 박스 그리드 목록을 개발 중입니다. 페이지 탐색이 수행 될 때 선택한 레코드를 기억해야합니다. 이제 페이지로 이동) 1 선택한 행 1, 2, 3 : 2 : 2 3) 페이지로 돌아 가자 :EXTJS 3.3.3 Grid

세부 사항 : 1) 페이지로 이동 1 4) 행 1, 2, 3이 이미 선택된 것으로 표시되어야합니다.

이러한 종류의 기능을 처리하는 그리드에 API가 있습니까?

미리 감사드립니다.

답변

2

답장을 보내 주셔서 감사합니다. 내가 그리드에 대한 플러그인을 implementind하여 내 디자인을 달성했다. 플러그인은

Ext.grid.Gridpanel({ 
store: 'someStore', 
plugins: [new Ext.ux.plugins.CheckBoxMemory({idProperty: "recordID"})] 

}); 

희망이 어떤 일을하는 데 도움이 같은 조롱에서

Ext.namespace('Ext.ux.plugins'); 

Ext.ux.plugins.CheckBoxMemory = Ext.extend(Object, 
{ 
    constructor: function(config) 
    { 
     if (!config) 
     config = {}; 

     this.prefix = 'id_'; 
     this.items = {}; 
     this.idProperty = config.idProperty || 'id'; 
    }, 

    init: function(grid) 
    { 
     this.view = grid.getView() 
     this.store = grid.getStore(); 
     this.sm = grid.getSelectionModel(); 
     this.sm.on('rowselect', this.onSelect, this); 
     this.sm.on('rowdeselect', this.onDeselect, this); 
     this.store.on('clear', this.onClear, this); 
     this.view.on('refresh', this.restoreState, this); 
    }, 

    onSelect: function(sm, idx, rec) 
    { 
     this.items[this.getId(rec)] = true; 
    }, 

    onDeselect: function(sm, idx, rec) 
    { 
     delete this.items[this.getId(rec)]; 
    }, 

    restoreState: function() 
    { 
     var i = 0; 
     var sel = []; 
     this.store.each(function(rec) 
     { 
     var id = this.getId(rec); 
     if (this.items[id] === true) 
      sel.push(i); 

     ++i; 
     }, this); 
     if (sel.length > 0) 
     this.sm.selectRows(sel); 
    }, 

    onClear: function() 
    { 
     var sel = []; 
     this.items = {}; 
    }, 

    getId: function(rec) 
    { 
     return rec.get(this.idProperty); 
    } 
}); 

이 플러그인

가 호출로 보인다.

+0

2007 년 4 월, sencha.com/forums의 사용자는 정확히 동일하게 구현되었습니다. 여기 링크 : https://www.sencha.com/forum/showthread.php?45723-problem-in-grid-pagination&highlight=getselectionmodel – JosefMadrid

1

나는 없을 것이라고 생각합니다. 선택한 레코드의 ID를 별도의 저장소/배열에 저장하고 페이지가 변경 될 때 선택 사항을 다시 적용해야합니다.

+0

내가 먼저 선택한 행을 배열에 저장하고 selectRows (Array)를 사용하여 레코드를 강조 표시했습니다. 그러나 여기에는 문제가 있습니다. 페이지 : 1에서 ID 1,2 및 3의 행을 선택하고 페이지 : 2로 이동하면 페이지 : 2의 행 1,2,3이 선택된다고 가정하십시오. 그래서 나는 행 ID를 저장하는 것이 페이지 매김 그리드에 적합하지 않다고 생각한다. – AJJ

+1

그래서 내가 행 ID가 아닌 레코드 ID에 대해 이야기하고 있습니다. 예를 들어 데이터베이스의 기본 키와 같이 강조 표시 할 레코드를 불명확하게 나타낼 수있는 것입니다. – Mchl

+0

Thanks Mchl. 나는 당신의 대답을 가지고 그것이 작동합니다! – AJJ

0

전역 범위에 MixedCollection 개체를 넣어 이러한 레코드를 추적 할 수 있습니다. 이렇게하면 다른 개체 유형의 전역 설정을 저장할 수 있습니다.

관련 문제