[FlexGrid] 編集不可のセルにペーストできてしまう

文書番号 : 81522     文書種別 : Limit
登録日 : 2016/01/05     最終更新日 : 2016/06/16

対象製品

Wijmo 5

詳細

グリッドの行を編集不可に設定(Row.isReadOnly = true)した場合、最初にペーストしたときはペーストされませんが、その行が編集可能になり、値の入力やペーストができるようになります。グリッドの列を編集不可に設定(Column.isReadOnly = true)した場合は、ペーストされることはありません。

この現象は制限事項です。
FlexGridではペースト後に再描画を行いますが、このとき行が再読み込みされて、行のisReadOnlyプロパティの設定情報が失われます。ペースト処理を許可した場合に行の編集を不可に設定するには、loadedRowsイベントで行の読み込み時に行の編集を不可に設定する必要があります。

なお、5.20153.117までのバージョンでは、ペースト時に値がペーストされない場合であっても行を再読み込みするため、編集不可の行に値をペーストしようとするたびにloadedRowsイベントが発生して行を編集不可に設定する処理が実行されてしまい、パフォーマンス上の問題がありました。
5.20161.151では、値がペーストされなかった場合には行を再読み込みしないように改善され、上記のパフォーマンスの問題は修正されました。(ただし、行を編集不可にする処理はloadedRowsイベントで実行する必要があります)

【再現手順】
1. 任意の文字列をコピーします。
2. 1行目2列目のセルを選択して、Ctrl+Vを2回押します。
結果: 編集不可のセルに値がペーストされてしまいます。
3. F2を押します。
結果: 編集不可のセルが編集できてしまいます。

サンプル

回避方法

ペースト処理を許可した場合に行の編集を不可に設定するには、loadedRowsイベントで行の読み込み時に行の編集を不可に設定する必要があります。

◎サンプルコード
// 回避方法
flexGrid. loadedRows.addHandler(function (s, e) {
  // loadedRowsイベントで行のisReadOnlyプロパティを再設定します。
  flexGrid.rows[0].isReadOnly = true;
});