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
) =>void
Properties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 한 필드, 한 행, 여러 행 등 데이터에 변경이 있을 때마다 발생한다.
데이터행 상태 등 데이터에 변경이 발생하는 모든 경우에 발생한다. onRowUpdate 등 기본 이벤트들과 onRowCountChange 이벤트가 발생한 후 마지막에 발생한다.data.onDataChange = (args) => { dataChanged = true; }
- onRowCountChange: (args:
any
) =>void
Properties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 newCount number in N 변경 후 행 수 oldCount number in N 변경 전 행 수 행 추가/삭제 등으로 행 개수가 변경될 때 발생한다.
onRowAdd 등 기본 이벤트가 발생한 후 마지막에 발생한다. - onRowMove: (args:
any
) =>void
Properties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 from number in N 이동할 데이터행 번호 to number in N 목표 데이터행 위치 데이터행이 다른 위치로 이동된 후 발생한다. - onRowStateChange: (args:
any
) =>void
Properties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 row number in N 데이터행 번호 행 상태가 변경될 때 발생한다. - onRowStatesChange: (args:
any
) =>void
Properties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 rows number[] in N 데이터행 번호 목록 행들의 상태가 변경될 때 발생한다. - onRowsAdd: (args:
any
) =>void
Properties 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
) =>void
Properties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 oldCount number in N 삭제 이전 행 수 모든 행들이 삭제된 후 발생한다. - onRowsDelete: (args:
any
) =>void
Properties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 rows number[] in N 데이터행 번호 목록 oldValues RtRowValues[] in N 각 데이터행의 삭제 이 전 값 목록.
rows 매개변수 목록과 동일한 순서로 값들이 들어 있다.하나 이상의 행들이 삭제된 후 발생한다. - onRowsMove: (args:
any
) =>void
Properties 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
) =>void
Properties of argsproperty type i/o opt description data RtListData in N 데이터 객체 자신 rows number[] in N 데이터행 번호 목록 oldValues RtRowValues[] in N 하나 이상의 행들이 변경된 후 발생한다. - onValueUpdate: (args:
any
) =>void
Properties 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
) =>void
Properties of argsproperty type i/o opt description data RtListData in N newCount number in N oldCount number in N beginUpdate 호출 후, endUpdate가 호출될 때 발생한다. - readonly:
boolean
true
로 지정하면 최초 로드 후 생성/수정/삭제할 수 없다.
데이터 생성 시 결정된 후 변경할 수 없다.See Also
- restorable:
boolean
행 수정 시 이전 값을 저장하고, 이 후 복원할 수 있다. See Also
- rowCount:
number
데이터행 수. - softDeleting:
boolean
true
면 데이터행 삭제 요청 시 실제로 삭제하지 않고,
행 상태를 RtDataRowState.DELETED로 설정한다. - title:
string
Row 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 추가할 값들. json
object
배열.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 false
true
면 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 false
true
면 softDeleting이 설정돼도 실제로 삭제한다.Returnsnumber - 실제 삭제된 행 수.지정한 행 부터 지정한 개수의 행들을 삭제한다.
지정한 행이 범위를 벗어나면 예외가 발생된다. 지정한 개수가 전체 행수를 벗어나면 나머지는 무시된다.See Also
- deleteRow
function deleteRow(row: number, force=false): void;
Parametersparam type opt default description row number N 데이터행 번호. 범위를 벗어나면 예외가 발생한다. force boolean Y false
true
면 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 false
true
면 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 추가할 값들. json
object
배열.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 false
true
이면 values에 없는 필드값은 undefind로 새로 지정하고,forceUpdate boolean Y false
true
이면 실제 변경된 필드가 전혀 없어도 변경 상태로 설정한다.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 false
true
이면 values에 없는 필드값은 undefind로 새로 지정하고,forceUpdate boolean Y false
true
이면 필드의 값이 동일해도 변경 상태로 설정한다.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 false
true
이면 values에 없는 필드값은 undefind로 새로 지정하고,forceUpdate boolean Y false
true
이면 실제 변경된 필드가 전혀 없어도 변경 상태로 설정한다.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