作成日: 2024/04/22 最終更新日: 2024/08/07
文書種別
不具合
発生環境
5.20232.939以降のバージョンで発生
状況
修正済み
詳細
複数行分で構成されたセル*にフォーカスがある状態で下矢印キーを押下すると、一度のキー入力で次の行のセルに遷移しません。
*以下のAのようなセル
| A | B |
| C |
回避方法
この問題はバージョン5.20241.19で修正されました。
修正版を適用しない場合の回避方法は次の通りです。
moveSelectionメソッドを上書きします。
//modifiedMethodのコード
let modifiedMethod = function (e, t, i) {
var o = this._g
, n = this._sel
, r = i && o.anchorCursor ? new wijmo.grid.CellRange(n.row2, n.col2) : new wijmo.grid.CellRange(n.row, n.col);
this._adjustReferenceCell(r, e, t);
var l = r.row
, s = r.col
, a = o.columns
, u = Math.max(0, o._szClient.height - o.columnHeaders.height)
, c = wijmo.grid.SelMove
, d = -1
, h = o.getMergedRange(o.cells, l, s);
h && (t == c.NextCell || t == c.NextEditableCell ? s = h.rightCol : t != c.PrevCell && t != c.PrevEditableCell || (s = h.leftCol));
switch (t) {
case c.NextCell:
case c.NextEditableCell:
d = s;
(s = this._getNextColumnCell(l, d, t)) != d && (h = o.getMergedRange(o.cells, l, s)) && s < h.col2 && (s = h.col2);
if (s == d)
for (; ;) {
if (l == o.rows.length - 1) {
s = r.col;
l = r.row;
break
}
var _ = !1;
if ((l = this._getNextRowCell(l, s, t)) > r.row) {
d = -1;
for (; d < a.length;) {
if ((s = this._getNextColumnCell(l, d, t)) == d) {
_ = !0;
break
}
(h = o.getMergedRange(o.cells, l, s)) && s < h.col2 && (s = h.col2);
break
}
if (_)
continue
}
break
}
o.select(l, s);
break;
case c.PrevCell:
case c.PrevEditableCell:
d = s;
(s = this._getNextColumnCell(l, d, t)) != d && (h = o.getMergedRange(o.cells, l, s)) && s > h.col && (s = h.col);
if (s == d)
for (; ;) {
if (0 == l) {
s = r.col;
l = r.row;
break
}
_ = !1;
if ((l = this._getNextRowCell(l, s, t)) < r.row) {
d = a.length;
for (; d > -1;) {
(s = this._getNextColumnCell(l, d, t)) != d ? (h = o.getMergedRange(o.cells, l, s)) && s > h.col && (s = h.col) : _ = !0;
break
}
if (_)
continue
}
break
}
o.select(l, s);
break;
default:
l = this._getNextRowCell(l, s, e, u);
s = this._getNextColumnCell(l, s, t, u);
i ? o.selection = o.anchorCursor ? new wijmo.grid.CellRange(n.row, n.col, l, s) : new wijmo.grid.CellRange(l, s, n.row2, n.col2) : o.select(l, s)
}
}
// moveSelectionメソッドを上書きします。
multirow._selHdl.moveSelection = modifiedMethod.bind(multirow._selHdl);