SMART datagrid v1.4 > Examples
GridDataSet.setRowCount를 호출해서 데이터셋의 크기를 미리 정하거나 변경할 수 있다. 이 때 추가되는 행의 값들을 비워 놓을 수 있다. 즉, GridDataSet의 행은 실제 값이 존재하지 않을 수 있고, rowCount를 지정한 후 적절한 시점에 updateRow나 updateRows로 빈 행들의 값을 채울 수 있다.
setRowCount를 이용하면 대용량 데이터나, 네트웍 대역폭이 좁은 경우 등에서 적절한 UI를 구현할 수 있다. 각 행에 실제 값을 초기화 했는 지 여부는 hasData 메소드로 확인할 수 있다. 아래 예제에서는 비어있는 행 개수를 5로 설정하고, 0, 2, 4 행들만 DataSet.updateRow 호출로 값을 채운다.
포커스 행의 값이 초기화 됐는 지 확인한다.
btnCheckRow_click: function () {
var row = grdMain.focusedDataRowIndex();
if (row >= 0) {
alert(dsMain.hasData(row) ? '데이터 행 존재 ' : '데이터 행 없음');
}
}
빈 행의 값을 수정한 후 다시 확인해 본다.
GridDataSet 호출 시 초기 값과 행 상태를 지정할 수 있다. 아래 그리드에서는 설정에 따라 rowCount를 2 행씩 증가 시킨다.
setRowCount의 fillDefaults와 defaultValues가 모두 지정되고, defaultValues의 해당 필드값이 undefined가 아니면 필드의 기본값 대신 defautlValues의 값으로 초기화된다.
아래 예제에서는 rowCount를 1000으로 미리 설정한 후 setTimeout을 이용해서 비동기적으로 5행씩 값을 채워 넣는다.
btnRun_click: function () {
dsMain3.setRowCount(1000);
for (var i = 0; i < 200; i++) {
(function (start) {
setTimeout(function () {
var rows = [];
for (var r = 0; r < 5; r++) {
rows.push(['aaa', 'bbb', start + r, 'ccc']);
}
dsMain3.updateRows(start, rows);
}, Math.random() * 10000);
})(i * 5);
}
}