SMART datagrid v1.4 > Examples

Back  Forward

Shared Grid RowSource  Example

SMART datagrid는 데이터셋, 행모델, 그리드뷰의 세 레이어로 분리되어 있고, 내부 이벤트를 통해 느슨하게 연결된다. 특히, 그리드는 데이터셋에 직접 연결되는 것이 아니라 행 모델을 통해 간접적으로 연결된다. 또한, 행 모델은 데이터셋의 데이터행들 뿐 아니라, 그리드를 구성하는 다른 행들을 구성해서 그리드에 표시되도록 한다. 

행 모델은 그리드와 트리에 따라 각각 GridRowSourceTreeRowSource 객체로 구현되고, GridBase.rowSource 속성으로 접근한다. 그리드 생성 시 기본 rowSource가 생성되지만, 이 속성을 통해 외부에서 새로 생성된 객체로 재지정할 수 있다. 또한, 중요하게는 여러 그리드가 하나의 rowSource 객체를 공유할 수 있다. 

Grid - 1
rows
Grid - 2
rows

Grid-2Grid-1의 rowSource를 자신의 rowSource로 설정한다. 

Code -1
    grdMain2.setRowSource(grdMain.rowSource());

행 모델은 정렬, 필터링, 그룹핑, 페이징이 적용되는 대상이고, 현재 행 위치 정보를 갖는다. 즉, rowSource를 공유하는 그리드들은 동일한 정렬, 필터링 등이 반영되고, 같은 행 위치에 포커스가 표시된다. 다만, 각 그리드는 개별적인 컬럼 모델을 가질 수 있으며, 포커스를 갖는 컬럼이 다를 수 있다. 

따라서, Grid-2의 포커스 행은 Grid-1의 포커스 행이 변경될 때 같이 변경된다. 반대의 경우도 마찬가지다. 하지만, 포커스 컬럼은 두 그리드가 다른 위치로 설정될 수 있다. 마우스나 키보드 스크롤 등으로 확인 할 수 있다. 

또, 행 수정이나 삽입, 추가 등은 행 모델 수준에서 이루어지므로, 한 쪽 그리드에서 편집이 시작되면 다른 그리드에도 상태가 바로 반영된다. Insert 키 등으로 한 쪽 그리드에서 행 수정을 시작하거나, Grid-2 "수량" 컬럼의 필터를 적용해 본다. 

(설명한대로, 정렬, 필터링, 그룹핑, 페이징이 그리드가 아니라 행 모델에 적용되므로 각각의 실행 UI는 한 그리드에서만 가능하도록 해야 한다.) 

소스보기 JSP 

See Also
GridDataSet
GridView
Examples
데이터셋 공유