可以连接到GridView的GridDataSet,在数据组被重置后,将会提供变更数据组的几种方法。 有关在应用初期,重置网格数据组的方法,请参考LoadCsvData、SetDataRows等例题。
本次例题中,我们将会了解添加一个以上的行或变更和删除现有行的方法。
在指定位置上,插入新的行。 可以通过数组或JSON对象而传递值。
function btnInsertRow_click() {
var row = Math.max(grdMain.focusedDataRowIndex(), 0);
dsMain.insertRow(row, ['v1', 'v2', 123, 'v4']);
dsMain.insertRow(row + 1, {
field1: 'w1', field2: 'w2', field3: 321, field4: 'w4'
});
}
在最后一行之后,添加新的行。可以通过数组或JSON对象而传递值。 InsertRow和AppendRow都会触发onRowInserted事件。
dsMain.onRowInserted = function (ds, row) {
alert(row + '在行位置上,添加了新的行。');
};
修改指定行的值。 如果strict为true,传递至undefined的字段值将不会发生变更。 如果checkDiff为true并且与现有值相同,就不会发生变更。 也就是说,如果checkDiff为true并且所传递的值与现有值相同,就不会发生行变更。 如果实际发生行变更,就会触发onRowUpdated事件。
dsMain.onRowUpdated = function (ds, row) {
alert(row + '行的值已发生变更。');
};
btnUpdateRow_click: function () {
var row = grdMain2.focusedDataRowIndex();
if (row >= 0) {
dsMain.updateRow(row, ['xxx', 'yyy', 777, 'zzz']);
}
};
在指定位置上,同时插入多个行。 如同insertRow,各个行可能是数组或JSON对象。
在最后一行之后,同时添加多个行。
从指定位置开始,同时修改连续的多个行。 如果通过参数而指定的行的数量,超出现有行的范围,就会被忽视。
有关复数行的处理事件等的详细说明, 请分别参考GridDataSet.insertRows、GridDataSet.appendRows、GridDataSet.updateRows。
我们也可以同时删除一个或多个数据行。
删除指定行。
同时删除一个以上的指定行。例题中,删除被Checked的行。
有关删除事件等的详细说明,请分别参考GridDataSet.deleteRow和GridDataSet.deleteRows。
btnDeleteRows_click: function () {
var rows = [];
var checkedRows = [];
for (var i = grdMain.rowCount(); i--;) {
var row = grdMain.getRow(i);
if (row.isChecked() && row.dataIndex() >= 0) {
checekdRows.push(row.dataIndex());
}
}
if (checkedRows.length > 0) {
dsMain.deleteRows(checkedRows);
} else {
alert('请Check要删除的行。');
}
}