我们可以通过调用GridDataSet.setRowCount,预先指定或变更数据组的大小。 这时,可以空出所添加的行的值。 也就是说,GridDataSet的行中,可能不存在实际值,并且可以在指定rowCount之后的适当时点, 通过updateRow或updateRows而填充空行的值。
如果使用setRowCount,就可以在海量数据或网络带宽较窄的情况下,体现适当的UI。 可以通过hasData方法,确认各个行中是否已有重置实际值。 下列例题中,设置空行的数量为5,并且通过调用DataSet.updateRow,只为0、2、4行填充值。
确认聚焦行的值是否已被重置。
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);
}
}