class RtListData
실제 데이터행들을 보관하고 관리하는 단일 데이터 소스이다.
즉 행들의 실제 추가/수정/삭제는 이 데이터에서 실행되고, RtDataView나 RtDataLinkView와 같은 data view는 이 데이터의 행들을 다른 방식으로 배치해서 보여준다.
데이터 생성 시 데이터행들의 구조를 결정하는 데이터필드들이 반드시 설정돼야 하는데, 필드 목록을 직접 지정하거나 생성자 매개변수로 전달되는 원본 데이터셋의 첫 행으로 부터 필드 목록을 자동 추출한다. 데이터행들을 최초 로드한 후, 데이터행(들)을 수정/삭제/추가할 수 있는데, restorable 설정으로 수정된 행을 원복할 수 있다. 또, softDeleting 설정으로 실제 삭제 대신 삭제 상태로 표시하고 추후에 삭제하거나 취소할 수 있다.
리스트 데이터 내용의 변화는 즉각 리스트 컨트롤 뷰에 반영되고, 리스트 컨트롤의 수정/추가/삭제 UI를 통해 데이터행을 변경하면 리스트 데이터에 바로 반영된다.
데이터 객체는 생성자 대신 주로 모듈 함수를 호출해서 생성한다.
즉 행들의 실제 추가/수정/삭제는 이 데이터에서 실행되고, RtDataView나 RtDataLinkView와 같은 data view는 이 데이터의 행들을 다른 방식으로 배치해서 보여준다.
데이터 생성 시 데이터행들의 구조를 결정하는 데이터필드들이 반드시 설정돼야 하는데, 필드 목록을 직접 지정하거나 생성자 매개변수로 전달되는 원본 데이터셋의 첫 행으로 부터 필드 목록을 자동 추출한다. 데이터행들을 최초 로드한 후, 데이터행(들)을 수정/삭제/추가할 수 있는데, restorable 설정으로 수정된 행을 원복할 수 있다. 또, softDeleting 설정으로 실제 삭제 대신 삭제 상태로 표시하고 추후에 삭제하거나 취소할 수 있다.
리스트 데이터 내용의 변화는 즉각 리스트 컨트롤 뷰에 반영되고, 리스트 컨트롤의 수정/추가/삭제 UI를 통해 데이터행을 변경하면 리스트 데이터에 바로 반영된다.
데이터 객체는 생성자 대신 주로 모듈 함수를 호출해서 생성한다.
list = RealTouch.createList(document, 'list'); // 'list'는 div의 id.
list.setConfig(config); // 컨트롤 속성 및 옵션 설정
list.data = data; // 데이터 연결See Also
Template Params
Events
- onDataChange: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 한 필드, 한 행, 여러 행 등 데이터에 변경이 있을 때마다 발생한다.
데이터행 상태 등 데이터에 변경이 발생하는 모든 경우에 발생한다. onRowUpdate 등 기본 이벤트들과 onRowCountChange 이벤트가 발생한 후 마지막에 발생한다.data.onDataChange = (args) => { dataChanged = true; } - onRowCountChange: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 newCount number in N 변경 후 행 수 oldCount number in N 변경 전 행 수 행 추가/삭제 등으로 행 개수가 변경될 때 발생한다.
onRowAdd 등 기본 이벤트가 발생한 후 마지막에 발생한다. - onRowMove: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 from number in N 이동할 데이터행 번호 to number in N 목표 데이터행 위치 데이터행이 다른 위치로 이동된 후 발생한다. - onRowStateChange: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 row number in N 데이터행 번호 행 상태가 변경될 때 발생한다. - onRowStatesChange: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 rows number[] in N 데이터행 번호 목록 행들의 상태가 변경될 때 발생한다. - onRowsAdd: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 row number in N 신규 행들이 삽입된 위치 count number in N 추가된 행 수 하나 이상의 행이 마지막에 추가되거나 중간 위치에 삽입된 후 발생한다. data.onRowsAdd = args => { const values = args.data.getValues(args.rows[0]); doc.getElementbyId('name').value = values.name; doc.getElementbyId('address').value = values.address; ... }; - onRowsClear: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 oldCount number in N 삭제 이전 행 수 모든 행들이 삭제된 후 발생한다. - onRowsDelete: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 rows number[] in N 데이터행 번호 목록 oldValues RtRowValues[] in N 각 데이터행의 삭제 이 전 값 목록.
rows 매개변수 목록과 동일한 순서로 값들이 들어 있다.하나 이상의 행들이 삭제된 후 발생한다. - onRowsMove: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 from number in N 이동할 시작 데이터행 번호 count number in N 데이터행 수 to number in N 목표 데이터행 위치 연속된 데이터행들이 다른 위치로 이동된 후 발생한다. - onRowsUpdate: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 rows number[] in N 데이터행 번호 목록 oldValues RtRowValues[] in N 하나 이상의 행들이 변경된 후 발생한다. - onValueUpdate: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 row number in N 데이터행 번호 field string in N 필드 이름 prop string[] in N value any in N 변경된 값 oldValue any in N 변경 이전 값 필드 값이 변경된 후 발생한다.
Properties
- fieldCount:
number데이터에 설정된 데이터필드 개수. - fields: IRtDataField[]
필드 정보 목록.
리턴되는 필드 객체는 복사본이다. 필드 객체의 속성을 변경해도 데이터에 반영되지 않는다.
getField 호출로 개별 필드 정보를 가져올 수 있다.data.fields.forEach(field => { if (field.required) { if (!getElementById(field.name).value) { alert(`${field.name} 값을 반드시 지정해야 합니다.`); } } });See Also
- onEndUpdate: (args:
any) =>voidProperties of argsproperty type i/o opt description data RtListData in N newCount number in N oldCount number in N beginUpdate 호출 후, endUpdate가 호출될 때 발생한다. - readonly:
booleantrue로 지정하면 최초 로드 후 생성/수정/삭제할 수 없다.
데이터 생성 시 결정된 후 변경할 수 없다.See Also
- restorable:
boolean행 수정 시 이전 값을 저장하고, 이 후 복원할 수 있다. See Also
- rowCount:
number데이터행 수. - softDeleting:
booleantrue면 데이터행 삭제 요청 시 실제로 삭제하지 않고,
행 상태를 RtDataRowState.DELETED로 설정한다. - title:
stringRow info view등의 header caption 등으로 사용되는 list data 타이틀. See Also
- validator: RtDataValidator
행 수정 및 추가 완료시 실행되는 검증 콜백.
필드 하나 수정 시에는 호출되지 않는다.
Methods
- appendRow
function appendRow(values: RtRowValues): boolean;Parametersparam type opt default description values RtRowValues N 추가할 필드 값들을 json객체로 넘겨야 한다.Returnsboolean - 실제로 추가되면true마지막 행 다음에 새로운 행을 추가한다.
insertRow(rowCount, values) 호출과 동일하다.
values의 속성들 중 데이터 필드로 존재하지 않는 속성 값은 무시되고, 속성으로 전달되지 않는 필드 값은undefined가 된다.data.appendRow({ name: document.getElementById('name').value, salary: +document.getElementById('salary').value, ... });onRowAdd, onRowCountChange, onDataChange 이벤트들이 순서대로 발생한다. See Also
- appendRows
function appendRows(values: RtRowValues[]|IRtDataValueSource): number;Parametersparam type opt default description values RtRowValues[] | IRtDataValueSource N 추가할 값들. jsonobject배열.Returnsnumber - 추가 후 총 행 수.마지막 행 다음에 새로운 하나 이상의 행들을 추가한다.
insertRows(rowCount, values) 호출과 동일하다.
json객체 배열로 신규 행들의 값을 전달한다.json의 속성들 중 데이터 필드로 존재하지 않는 속성 값은 무시되고, 속성으로 전달되지 않는 필드 값은undefined가 된다.const values = [ {name: 'name1', age: 35}, {name: 'name2', age: 27} ]; data.appendRows(values);onRowsAdd, onRowCountChange, onDataChange 이벤트들이 순서대로 발생한다. See Also
- beginUpdate
function beginUpdate(): void;ReturnsvoidendUpdate를 호출하기 전까지 이벤트 락이 생성되어 데이터 변경 이벤트들이 발생하지 않는다. - createEditableView
function createEditableView(name: string, options?: IRtDataViewOptions): RtDataView;Parametersparam type opt default description name string N 생성되는 데이터뷰 이름. options IRtDataViewOptions Y 데이터뷰 생성 옵션. ReturnsRtDataView - 이 데이터를 소스로하는 데이터뷰.이 데이터를 source로 하는 RtDataView를 생성한다.
사용자가 직접 UI 입력을 통해 행을 수정하거나 추가하려면 반드시 이 data view를 생성해서 컨트롤에 연결해야 한다.See Also
- createView
function createView(name: string, options?: IRtDataViewOptions): RtDataView;Parametersparam type opt default description name string N 생성되는 데이터뷰 이름. options IRtDataViewOptions Y 데이터뷰 생성 옵션. ReturnsRtDataView - 이 데이터를 소스로하는 데이터뷰.이 데이터를 source로 하는 RtDataView를 생성한다. See Also
- deleteAll
function deleteAll(force=false): boolean;Parametersparam type opt default description force boolean Y falsetrue면 softDeleting이 설정돼도 실제로 삭제한다.Returnsboolean - 하나 이상의 행들이 존재하고 실제 모두 삭제되면true.데이터행이 하나라도 존재하면 모두 삭제하고 true를 리턴한다.
데이터행이 하나도 없으면 아무일도 하지 않고 바로false를 리턴한다. 또, softDeleting이true이면 실제 삭제되지 않고, 모든 행들의 상태가 RtDataRowState.DELETED로 설정된다.softDeleting이면 onRowStatesChange, onDataChange 이벤트들이 순서대로 발생한다.
softDeleting이 아니면 onRowsClear, onRowCountChange, onDataChange 이벤트들이 순서대로 발생한다.See Also
- deleteRange
function deleteRange(row: number, count: number, force=false): number;Parametersparam type opt default description row number N 삭제 시작 행. 범위를 벗어나면 예외가 발생한다. count number N 삭제 행 수. 전체 행수를 벗어나면 나머지는 무시된다. force boolean Y falsetrue면 softDeleting이 설정돼도 실제로 삭제한다.Returnsnumber - 실제 삭제된 행 수.지정한 행 부터 지정한 개수의 행들을 삭제한다.
지정한 행이 범위를 벗어나면 예외가 발생된다. 지정한 개수가 전체 행수를 벗어나면 나머지는 무시된다.See Also
- deleteRow
function deleteRow(row: number, force=false): void;Parametersparam type opt default description row number N 데이터행 번호. 범위를 벗어나면 예외가 발생한다. force boolean Y falsetrue면 softDeleting이 설정돼도 실제로 삭제한다.Returnsvoid지정한 행 번호에 위치한 데이터행을 삭제한다.
행 번호가 범위를 벗어나면 예외가 발생된다. 둘 이상의 행들을 동시에 삭제할 때는 deleteRows를 사용한다.const row = +doc.getElementById('row').value; data.deleteRow(row);softDeleting이면 onRowStateChange, onDataChange 이벤트들이 순서대로 발생한다.
softDeleting이 아니면 onRowDelete, onRowCountChange, onDataChange 이벤트들이 순서대로 발생한다.See Also
- deleteRows
function deleteRows(rows: number[], force=false): number[];Parametersparam type opt default description rows number[] N 삭제할 데이터행 목록. 범위를 벗어나면 예외가 발생한다. Array가 아니면 아무일도 하지 않고 []를 리턴한다.force boolean Y falsetrue면 softDeleting이 설정돼도 실제로 삭제한다.Returnsnumber[] - 실제 삭제된 행 번호 목록지정한 번호들에 위치한 데이터행들을 삭제한다.
범위를 벗어난 행 번호가 포함되면 예외가 발생된다.See Also
- endUpdate
function endUpdate(): void;ReturnsvoidbeginUpdate 호출 후 이 메쏘드를 호출하면 이벤트 락이 해제된다.
onEndUpdated 이벤트가 발생한다. - getField
function getField(index: number): IRtDataField;Parametersparam type opt default description index number N 필드 전체 목록에서 위치. ReturnsIRtDataField - 데이터필드 정보.지정한 위치의 데이터필드 정보를 리턴한다.
범위를 벗어난 위치를 지정하면 예외가 발생한다. [주의] 리턴되는 객체는 복사본이다. 속성을 변경해도 데이터에 반영되지 않는다.See Also
- getStatedRows
function getStatedRows(state: RtDataRowState): number[];Parametersparam type opt default description state RtDataRowState N 데이터행 상태 Returnsnumber[] - 행 번호 목록지정한 상태를 갖는 데이터행 번호 목록을 가져온다. - insertRow
function insertRow(row: number, values: RtRowValues): boolean;Parametersparam type opt default description row number N 행 삽입 위치. rowCount 범위를 벗어나면 예외가 발생한다. values RtRowValues N 추가할 필드 값들을 json객체로 넘겨야 한다.Returnsboolean - 실제로 추가되면true지정한 위치에 새로운 행을 삽입 추가한다.
values의 속성들 중 데이터 필드로 존재하지 않는 속성 값은 무시되고, 속성으로 전달되지 않는 필드 값은undefined가 된다.const row = +doc.getElementById('row').value; data.insertRow(row, { name: document.getElementById('name').value, salary: +document.getElementById('salary').value, ... });onRowAdd, onRowCountChange, onDataChange 이벤트들이 순서대로 발생한다. See Also
- insertRows
function insertRows(row: number, values: RtRowValues[]|IRtDataValueSource): number;Parametersparam type opt default description row number N 행 삽입 위치. rowCount 범위를 벗어나면 예외가 발생한다. values RtRowValues[] | IRtDataValueSource N 추가할 값들. jsonobject배열.Returnsnumber - 추가 후 총 행 수.지정한 위치에 새로운 하나 이상의 행들을 추가한다.
json객체 배열로 신규 행들의 값을 전달한다.json의 속성들 중 데이터 필드로 존재하지 않는 속성 값은 무시되고, 속성으로 전달되지 않는 필드 값은undefined가 된다.const row = +doc.getElementById('row').value; const values = [ {name: 'name1', age: 35}, {name: 'name2', age: 27} ]; data.insertRows(row, values);onRowsAdd, onRowCountChange, onDataChange 이벤트들이 순서대로 발생한다. See Also
- isEmpty
function isEmpty(row: number): boolean;Parametersparam type opt default description row number N 행 위치. Returnsboolean - 값들이 존재하면true.setRowCount 호출 등으로 데이터의 행수를 늘리면서 값은 설정되지 않은 행들이 존재할 수 있다.
지정한 행에 값이 들어있는 지 확인. - loadData
function loadData(source: any[]|IRtDataValueSource): RtListData;Parametersparam type opt default description source any[] | IRtDataValueSource N ReturnsRtListData - 데이터 자신.기존 행들을 모두 제거하고 source 매개변수로 전달된 데이터소스로 부터 데이터행들을 새로 구축한다. (이전 행 수와 달라지면)onRowCountChange, onDataChange 이벤트들이 순서대로 발생한다. - moveRow
function moveRow(from: number, to: number): boolean;Parametersparam type opt default description from number N 데이터행 번호. 범위를 벗어나면 예외가 발생한다. to number N 이동 위치. 범위를 벗어나면 예외가 발생한다. Returnsboolean - 실제 이동했으면true행의 위치를 변경한다. onRowMove, onDataChange 이벤트들이 순서대로 발생한다. See Also
- moveRows
function moveRows(from: number, count: number, to: number): number;Parametersparam type opt default description from number N 시작 데이터행 번호. 범위를 벗어나면 예외가 발생한다. count number N 연속된 행 수. 범위를 벗어나면 마지막 행까지만 이동 시킨다. to number N 이동 위치. 범위를 벗어나면 예외가 발생한다. Returnsnumber - 실제 이동한 행 수연속된 행들의 위치를 변경한다. See Also
- restoreAllRows
function restoreAllRows(): number;Returnsnumber - 복원된 행 수모든 행들을 복원한다. - restoreRow
function restoreRow(row: number): boolean;Parametersparam type opt default description row number N 데이터행 번호. 범위를 벗어나면 예외가 발생한다. Returnsboolean - 실제 복원되면true.수정되거나 softDeleting 상태에서 삭제된 행을 복원한다.
수정된 행은 이전 값들로 복원되고 수정 상태가 제거된다. 삭제된 행은 삭제 상태가 제거된다.// focused 행을 복원한다. data.restoreRow(list.focusedRow);onRowStateChange, onDataChange 이벤트들이 순서대로 발생한다. - restoreRows
function restoreRows(rows: number[]): number[];Parametersparam type opt default description rows number[] N 행 번호 목록. Array가 아니면 아무일도 하지 않고 []를 리턴한다.Returnsnumber[] - 실제로 복원된 행 번호 목록지정한 행들을 복원한다.
수정되거나 softDeleting 상태에서 삭제된 행들을 복원한다. 수정된 행은 이전 값들로 복원되고 수정 상태가 제거된다. 삭제된 행은 삭제 상태가 제거된다. - setRowCount
function setRowCount(newCount: number, fillDefaults=false): void;Parametersparam type opt default description newCount number N 데이터행 수. fillDefaults boolean Y false추가되는 행의 값들을 기본값으로 채울 지 여부. Returnsvoid추가/삭제 하지 않고 강제로 데이터행 수를 변경한다.
fillDefault가false면 새로 추가되는 행들은 값 없이 생성되고(hasValues가true리턴),true면 각 필드의 기본값들로 채워진다. 기본값이 설정되지 않은 필드 값은undefined가 된다. 이 때, 모든 필드의 기본값이 설정되지 않은 경우라도 hasValues는true를 리턴한다.onRowCountChange, onDataChange 이벤트들이 순서대로 발생한다. - updateRange
function updateRange(row: number, count: number, values: RtRowValues[], forceEmpty=false, forceUpdate=false): number[];Parametersparam type opt default description row number N 수정 시작 행. 범위를 벗어나면 예외가 발생한다. count number N 수정 행 수. 전체 행수를 벗어나면 나머지는 무시된다. values RtRowValues[] N 수정 값들이 지정된 json객체 목록.forceEmpty boolean Y falsetrue이면 values에 없는 필드값은 undefind로 새로 지정하고,forceUpdate boolean Y falsetrue이면 실제 변경된 필드가 전혀 없어도 변경 상태로 설정한다.Returnsnumber[] - 실제 변경된 행들의 번호 목록false이면 values에 없는 필드의 값은 손대지 않는다. - updateRow
function updateRow(row: number, values: RtRowValues, forceEmpty=false, forceUpdate=false): boolean;Parametersparam type opt default description row number N 변경할 행. 범위를 벗어나면 예외가 발생한다. values RtRowValues N 변경할 필드+값 목록. forceEmpty boolean Y falsetrue이면 values에 없는 필드값은 undefind로 새로 지정하고,forceUpdate boolean Y falsetrue이면 필드의 값이 동일해도 변경 상태로 설정한다.Returnsboolean - 실제 변경되면true.지정한 행의 필드 값들을 지정한 값들로 변경한다.
지정한 행 위치가 범위를 벗어나면 예외가 발생된다. 실제로 하나 이상 필드의 값이 변경되면true를 리턴한다. forceEmpty가false이면 values에 지정되지 않은 값들은 변경하지 않는다.false이면 values에 없는 필드의 값은 손대지 않는다. - updateRows
function updateRows(rows: number[], values: RtRowValues[], forceEmpty=false, forceUpdate=false): number[];Parametersparam type opt default description rows number[] N 행 번호 목록. Array가 아니면 아무일도 하지 않고 []를 리턴한다.values RtRowValues[] N 수정 값들이 지정된 json객체 목록.forceEmpty boolean Y falsetrue이면 values에 없는 필드값은 undefind로 새로 지정하고,forceUpdate boolean Y falsetrue이면 실제 변경된 필드가 전혀 없어도 변경 상태로 설정한다.Returnsnumber[] - 실제 변경된 행들의 번호 목록지정한 행의 필드 값들을 지정한 값들로 변경한다.
지정한 행들 중 한 행의 위치리도 범위를 벗어나면 예외가 발생된다. 실제로 변경된 행들의 수를 리턴한다. forceEmpty가false이면 values에 지정되지 않은 값들은 변경하지 않는다.false이면 values에 없는 필드의 값은 손대지 않는다. - updateValue
function updateValue(row: number, field: string, value: any): boolean;Parametersparam type opt default description row number N 변경할 행. 범위를 벗어나면 예외가 발생한다. field string N 필드 이름. value any N 변경할 값. Returnsboolean - 실제로 값이 변경되면true.지정한 행의 필드 값을 지정한 값으로 변경한다.
지정한 행 위치가 범위를 벗어나거나, 존재하지 않는 필드명이면 예외가 발생된다. 실제로 변경되면true를 리턴한다.
Inherited Properties
Inherited Methods
- RtSimpleData.createLinkView
- RtSimpleData.getValues
- RtSimpleData.getAllValues
- RtDataSource.findDistinctRows
- RtDataSource.findRow
- RtDataSource.findRows
- RtDataSource.getSummary
- RtDataSource.getValue
- RtDataSource.isRowCreated
- RtDataSource.isRowDeleted
- RtDataSource.isRowUpdated
- RtObject.destroy