SMART datagrid v1.4 > Concepts

Back  Forward

Concepts.Cell Editing Overview

SMART datagrid는 실행 시간에 사용자가 직접 행을 추가하거나 삭제하고, 셀 편집기를 이용해 값을 수정할 수 있는 여러 가지 방법을 제공한다. 또, 편집 활동이 발생하는 각 지점마다 이벤트를 발생시켜서 개발자가 어플리케이션 요구에 맞는 UI를 구현할 수 있도록 한다. 

그리드에서 사용자 편집은 어플리케이션에 따라 다양한 방식으로 구현될 수 있으며, 상당히 복잡할 수 있다. 

1. 편집기 열고 닫기

편집하려는 데이터셀에 포커스를 가저간 후, F2 키를 입력하거나 마우스를 더블클릭하면 컬럼에 설정된 편집기가 표시된다. 또, 포커스가 있는 데이터셀에서 키 입력을 시작하면 편집기가 표시되면서 동시에 입력이 시작된다. 

GridBase.showEditor를 호출해서 편집기를 표시할 수도 있다. 편집기가 표시되가 직전에 GridBase.onShowEditor 이벤트가 발생한다. 

2. 편집 완료 및 취소

편집기가 표시 중일 때 Esc 키를 입력하면 셀 편집이 취소되고, 편집기가 닫히면서 편집기에 입력된 값은 무시된다. 편집기가 닫힌 직후 GridBase.onEditCanceled 이벤트가 발생한다. GridBase.cancelEditor를 호출해서 셀 편집을 취소할 수도 있다. 또, 행 편집을 취소하려면 편집기가 표시되지 않은 상태에서 다시 한 번 Esc 키를 누르면 된다. 

셀 편집을 완료하기 위해서는 Enter 키를 입력하거나, 키보드나 마우스로 포커스를 다른 셀로 이동시키면 된다. 이 때, 다른 행의 셀로 이동시키면 셀 편집 완료와 동시에 행 편집 완료가 실행된다. GridBase.commitEditor를 직접 호출해서 편집을 완료시킬 수도 있다. 

셀 편집 완료 직전에 Validation이 실행되고, 검증이 완료되면 입력된 값이 반영되면서 GridBase.onEditCommitted, GridBase.onEditCellUpdated 이벤트가 차례로 발생한다. 이 때, 편집기에서 사용자가 편집한 값 대신 다른 값을 전달할 수 있는데, DataColumn.editCallback 함수 에서 editResult.value를 다른 값으로 설정하면 된다. 

셀 편집을 취소하기 위해서는 Esc 키를 입력한다. 혹은 cancelEditor 메소드를 호출한다. 

3. 행 편집 완료 및 취소

EditOptions.updateByCelltrue로 지정하지 않는다면, SMART datagrid는 기본적으로 행 단위 편집으로 동작한다. 즉, 행 전체 편집을 완료하거나 취소한다. 행 편집이 완료돼야 데이터셋으로 입력된 값들이 전달된다. 

편집을 완료하기 위해서는 방향키나 마우스 클릭으로 행의 위치를 변경한다. 또는, GridBase.commit 메소들 직접 호출할 수도 있다. 편집을 취소하기 위해서는 편집기가 표시되지 않은 상태에서 Esc 키를 입력하면 된다. 즉, 편집기가 표시된 상태라면 Esc 키를 두 번 연속 누르면 된다. 또, cancel 메소드를 호출한다. 

4. 편집 이벤트들

셀 편집기를 이용해서 사용자가 셀을 수정할 때 아래 표에 나열된 순서대로 그리드 이벤트가 발생할 수 있다. 

Table-1  편집 이벤트들
이벤트설명
onShowEditor(grid, index)편집기기 표시되기 직전에 발생한다. 이 이벤트 핸들러에서 명시적으로 false를 리턴하면 편집기가 표시되지 않는다.
onEditChanged편집기 내용이 수정될 때마다 발생한다.
onEditCanceled셀 편집이 취소될 때 발생한다.
editCallback이 콜백 함수 내에서 사용자가 편집한 값 대신 다른 값으로 편집을 완료할 수 있다.
onEditCommitted셀 편집이 정상적으로 완료되면 발생한다.
onEditCellUpdated편집이 완료되는 시점에 입력된 값이 기존 값과 다를 때 발생한다.
onEditRowPasted편집 중인 행에 클립보드 붙여넣기가 됐을 때 발생한다.
onEditSearchSearchCellEditor가 리스트에 표시할 항목을 요청하는 이벤트다.
onEditRowCommitted행 편집이 완료된 후 발생한다.
onEditRowCanceled행 편집이 취소된 후 발생한다.
onPasted클립보드 붙여넣기가 완료된 후 발생한다.
5. 셀 편집기 선택

현재 SMART datagrid에서는 아래 테이블에 나열된 종류의 셀 편집기를 제공한다. DataColumn.editor 속성으로 편집기의 종류와 속성을 설정한다. 

Table-2  셀 편집기들
종류설명주요 속성들
'line'
LineCellEditor
한 줄 텍스트 편집기. 기본 편집기maxLength - 입력 최대 길이
'list'
ListCellEditor
설정 가능한 목록을 리스트 박스로 표시하는 텍스트 편집기.
'multiline'
MultiLineCellEditor
여러 줄 줄 텍스트 편집기maxLength - 입력 최대 길이
'number'
NumberCellEditor
숫자 편집기positiveOnly - 양수값만 입력
maxDigits - 소수점 이하 자리수
'date'
DateCellEditor
달력 리스트를 표시하는 날짜 편집기yearNavigation - 년도 변경 버튼 표시
showToday - 오늘 날짜 이동 버튼 표시
'search'
SearchCellEditor
조건에 따라 리스트 목록을 변경하는 리스트 편집기keyLength - 목록 요청을 하는 최소 텍스트 길이
searchDelay - 입력 후 요청 이벤트 발생 전 대기 기간
6. 편집 중 정렬, 필터링, 그룹핑, 페이징

현재 행 편집 중이면 정렬, 필터링, 행 그룹핑, 페이징을 진행하지 않는다. 

7. 편집 중 데이터셋 변경

현재 행 편집 중이면 "클라이언트 편집 중" 예외가 발생하면서 데이터셋을 변경하지 못하도록 하고 있다. 

See Also
TextCellEditor
DateCellEditor
CheckCellRenderer
DataColumn
Examples
셀 편집
텍스트 편집기
날짜 편집기
Check Cell Renderer