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.onRowUpdate = 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.deleteRows, GridDataSet.deelteRowsを参考する。
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してください。');
}
}