2017-05-19 1 views
0

개요 및 사용 가능한 화면 공간을 사용하려면 두 개의 그리드가 서로 옆에 있지만 버튼이있는 하나의 도구 모음 만 있으면됩니다. 두 개의 그리드는 다른 ChainedStores에 바인딩되지만 연결된 체인 저장소의 기본 소스 저장소는 동일합니다. ChainedStores에는 기본 저장소에있는 레코드의 파티션을 만드는 필터가 있습니다.이 중 절반은 왼쪽에, 다른 하나는 오른쪽에 있습니다.SelectionModel : 두 개의 그리드에서 하나의 선택 만 허용

도구 모음의 단추를 클릭하면이 표에서 선택한 레코드에 대한 작업을 수행해야합니다.

selectionModels에서 오른쪽 또는 왼쪽 모눈에서 하나만 선택한 레코드를 원하지만 각각에서 하나만 원하는 것은 아닌지 알려줄 수 있습니까? 당신은 주변 시도 할 수

: https://fiddle.sencha.com/#view/editor&fiddle/1vs4

+1

을 참조하십시오 grid1에 대한

, grid2에 대한

listeners :{ select : function(sel, record, index, eOpts){ sel.view.up('panel[name=main]').down('grid[name=grid2]').getSelectionModel().deselectAll(); } } 

, 아니, 없다. 'beforeselect' 이벤트를 적절히 사용하여 거부 할 필요가 있습니다. –

+0

@EvanTrimboli에서 문서를 간과하지 않았 음을 확인해 주셔서 감사합니다. 그러나 사용자가 선택한 것을 거부하고 싶지는 않습니다. 이제 다른 그리드의 selectionModel에서 setSelected ([])를 호출합니다. 그러나 선택 변경을 반영하도록 표를 가져 오려면 항상 getView(). refresh()를 호출해야합니다. 이거 버그 야? https://fiddle.sencha.com/#view/editor&fiddle/1vs5 – Alexander

+2

'deselectAll();'을 사용하십시오. '.setSelected ({});'를 호출하는 이유를 잘 모르겠다. 특히'selected'는 private이기 때문에. –

답변

2

ExtJS에 두 개의 서로 다른 grid.You에 대한 동일한 선택 모델을 지원하지 않는 코드에 의해 수동으로 처리해야합니다.

각 표에 select 이벤트 리스너를 쓸 수 있으며 해당 이벤트에서 다른 표의 레코드 선택을 취소 할 수 있습니다.

listeners :{ 
       select : function(sel, record, index, eOpts){ 
        sel.view.up('panel[name=main]').down('grid[name=grid1]').getSelectionModel().deselectAll(); 
       } 
      } 

fiddle