[FlexGrid] form上に配置し、imeEnabledプロパティにtrueを設定したFlexGridにおいて、IMEが有効なセル上で上下キーを押下しても、セルの選択が移動しない

文書番号 : 81719     文書種別 : Bug
登録日 : 2016/07/05     最終更新日 : 2016/09/14

対象製品

Wijmo 5

発生環境

Internet Explorer 11でのみ発生

ステータス

修正済み

詳細

form上にFlexGridを配置し、FlexGridのimeEnabledプロパティにtrueを設定した場合、IMEが有効なセルで上下キーを押下してもセルの選択を移動できません。
左右キー押下では、セルの選択は移動します。また、チェックボックスが設定されたセルや読み取り専用のセルは、IMEが無効となるため、上下キー押下でセルの選択は移動します。

【再現手順】
1. 3行1列目をクリックします。
2. 上キーまたは下キーを押下します。
結果:セル選択が移動しません。

サンプル

回避方法

この問題はバージョン5.20162.207で修正されました。
修正版の適用方法については、アップデートの方法を参照してください。

修正版を適用しない場合の回避方法は次の通りです。

下記コードのようにFlexGridのkeydownイベントを使用し、上下キー押下時にセルの選択を移動するように実装します。

◆サンプルコード(JavaScript)
----------------------------------
gridObject.hostElement.addEventListener('keydown', function (e) {
  if (e.key == "Up") {
    var range = gridObject.selection;
    if (!gridObject.columns[range.col].isReadOnly &&
      gridObject.columns[range.col].dataType != 'Boolean') {
      if (e.shiftKey) {
        if (range.row != 0) {
          gridObject.selection = new wijmo.grid.CellRange(range.row - 1, range.col, range.row2, range.col2);
        }
      }
      else {
        if (range.row != 0) {
          gridObject.selection = new wijmo.grid.CellRange(range.row - 1, range.col);
        }
        else {
          gridObject.selection = new wijmo.grid.CellRange(range.row, range.col);
        }
      }
    }
  }
  else if (e.key == "Down") {
    var range = gridObject.selection;
    if (!gridObject.columns[range.col].isReadOnly) {
      if (e.shiftKey) {
        if (range.row != gridObject.rows.length - 1) {
          gridObject.selection = new wijmo.grid.CellRange(range.row + 1, range.col, range.row2, range.col2);
        }
      }
      else {
        if (range.row != gridObject.rows.length - 1) {
          gridObject.selection = new wijmo.grid.CellRange(range.row + 1, range.col);
        }
        else {
          gridObject.selection = new wijmo.grid.CellRange(range.row, range.col);
        }
      }
    }
  }
})
----------------------------------