SMART datagridグリッドは実行時間にユーザーが直接行を追加、又は削除し、 セルエディターを利用して値を修正できるいろんな方法を提供する。 また、編集活動が発生する各時点毎にイベントを発生させて 開発者がアプリケーションの要求に合うUIを具現することができるようにする。
グリッドでユーザーの編集はアプリケーションによっていろいろな形で具現されて、 それはすごく複雑である場合もある。
編集しようとするデータセルにフォーカスを与えた後、 F2キーを打つかマウスをダブルクリックするとカラムに設定されたエディターが表示される。 また、フォーカスがあるデータセルでキーの入力を始めるとエディターが表示される同時に入力が始まる。
GridBase.showEditorを呼び出してエディターを表示することもある。 エディターが表示される直前にGridBase.onShowEditorイベントが発生する。
エディターが表示中の時Escキーを打つとセルの編集が取消になり、エディターが閉ざされてエディターに入力された値は無視される。 エディターが閉ざされた直後GridBase.onEditCanceledイベントが発生する。 GridBase.cancelEditorを呼び出してセルの編集を取消にすることもできる。 また、行の編集を取消にするためにはエディターが表示されてない状態でもう一度Escキーを打てばいい。
セルの編集を完了するためにはEnterキーを打つか、キーボードーやマウスでフォーカスを移動させる。 この時、他の行のセルに移動させればセルの編集と同時に行の編集の完了が実行される。 GridBase.commitEditorを直接呼び出して編集を完了させることもできる。
セルの編集の完了の直前にValidationが実行されて、検証が完了になったら入力された値が反映されて GridBase.onEditCommitted、GridBase.onEditCellUpdatedイベントが順番に発生する。 この時、エディターでユーザーが編集した値の代わりに他の値を渡すとこができる。そのために、DataColumn.editCallback関数でeditResult.valueを他の値に設定する。
セルの編集を取消にするためにはEscキーを入力する。又はcancelEditorメソッドを呼び出す。
EditOptions.updateByCellをtrueに指定しなければ、 SMART datagridグリッドは基本的に行単位で編集を行う。 つまり、行全体の編集を完了したり、取消する。 行の編集が完了にならなければデータセットに入力された値たちが渡される。
編集を完了するためには方向キーやマウスクリックで行の位置を変更する。 または、GridBase.commitメソッドを直接呼び出すこともできる。 編集を取消にするためにはエディターが表示されてない状態でEscキーを入力すればいい。 つまり、エディターが表示された状態ならEscキーを二回連続で打てばいい。 また、cancelメソッドを呼び出す。
セルエディターを利用してユーザーがセルを修正する時 下の表に羅列された順にグリッドイベントが発生することができる。
イベント | 説明 |
---|---|
onShowEditor(grid, index) | エディターが表示される直前に発生する。このイベントハンドラーで明示的にfalseをリターンすればエディターが表示されない。 |
onEditChanged | エディターの内容が修正されるたびに発生する。 |
onEditCanceled | セルの編集が取消になる度に発生する。 |
editCallback | このコールバック関数の内でユーザーが編集した値の代わりに他の値で編集を完了することができる。 |
onEditCommitted | セル編集が正常的に完了されれば発生する。 |
onEditCellUpdated | 編集が完了される時点で入力された値が既存の値と違う時に発生する。 |
onEditRowPasted | 編集中の行にクリップボードの貼り付けが成功した時に発生する。 |
onEditSearch | SearchCellEditorがリストに表示する項目を要請するイベントである。 |
onEditRowCommitted | 行の編集が完了された後発生する。 |
onEditRowCanceled | 行の編集が取消になった後発生する。 |
onPasted | グリップボードの貼り付けが完了された後発生する。 |
現在SMART datagridグリッドでは下のテーブルに羅列された種類のセルエディターを提供する。 DataColumn.editorプロパティーでエディターの種類とプロパティーを設定する。
種類 | 説明 | 主なプロパティー達 |
---|---|---|
'line' LineCellEditor | 一行のテキストエディター。基本の編集機 | maxLength – 入力の最大の長さ |
'list' ListCellEditor | 設定可能な目録をリストボックスで表示するテキストのエディター | |
'multiline' MultiLineCellEditor | 複数の行のテキストエディター | maxLength - 入力の最大の長さ |
'number' NumberCellEditor | 数字のエディター | positiveOnly – 正の数だけ入力 maxDigits – 小数点以下の桁数 |
'date' DateCellEditor | カレンダーリストを表示する日付のエディター | yearNavigation – 年度の変更ボタンの表示 showToday – 今日の日付に移動するボタン表示 |
'search' SearchCellEditor | 条件によってリストの目録を変更するリストエディター | keyLength - 目録を要請する最小テキストの長さ searchDelay – 入力の後、要請するイベンドが発生する前の待機期間 |
現在、行が編集中ならソーティング、フィルタリング、行のグルーピング、ページングを進行しない。
現在行の編集中なら"クライアント編集中"例外が発生してデータセットを変更しないようにしている。