rowCountを設定してデータセットのサイズを先に決めるごとができる。 この時追加される行の値たちを空にして置くことができる。 つまり、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);
}
}