SMART datagrid客体たちのプロパティーやメソッド等を使うとき、データセルの位置を指定する場合が多い。 データセルの位置はカラムと行二つの値で決定され、 CellIndex客体が二つの値を同時に持っていれば関わりのあるメソッドやプロパティーなどでデータセルの位置の値として使われる。
この例題ではColumn Groupingで使ったフィールドとカラムの定義を利用して CellIndexが使われる場合と、 focusedIndexプロパティーで指定されるフォーカスセルの位置を変更し、変更イベンドに対応する方法について説明する。
下のグリッドで太い境界線のボックスが表されるセルが入力フォーカスを持つセルで、 GridBase.focusedIndex プロパティーがそのセルの位置の値をリターンする。 キーボードの入力を始めると、そのセルにエディターが表れ、変更が始まる。 セルの編集についての内容は他の例題でより詳しく説明する。
GridBase.setFocusedIndexメソッドを利用してフォーカスセルを変更できる。 "Change Focus"ボタンをクリックするとフォーカスの位置が下の方に移動する。
var index = grdMain.focusedIndex();
index.rowIndex++;
grdMain.setFocusedIndex(index, true);
キーボードを利用したりsetFocusedIndexの呼び出しを通して位置が変更になったら GridBase.onCurrentChangedイベントが発生する。
grdMain.onCurrentChanged = function (grid, newIndex) {
$('#txtCurrent').text("(" + newIndex.rowIndex + ", " + newIndex.column.name() + ")");
};
データ行の変更だけチェックする必要な時があるが、この時にはonCurrentRowChangedイベントを利用する。 このイベントはデータ行の位置が変更になった時だけ発生する。詳しい説明はGridBase.onCurrentRowChangedヘルプトピックを参考する。
データセルなどでマウスのクリックやダブルクリックをするとイベントが発生するが、 この場合にも該当セルの位置情報がCellIndex客体に伝えられる。
grid.onDataCellDblClicked = function (grid, index) {
$('#txtClicked').text("(" + index.rowIndex + ", " + index.column.name() + ") " + " double clicked.");
};