作成日: 2018/12/03 最終更新日: 2024/08/23
文書種別
不具合
発生環境
Chromeで発生
状況
修正済み
詳細
MultiRowにて、上下キーを押下し続け、連続で選択セルを変更した場合、セル選択によるスクロールやセル移動の動作が遅くなり、止まる場合があります。
回避方法
- この問題はバージョン5.20183.568で修正されました。
- スクロール遅延が起こる問題は、5.20232.939以降のバージョンで再発しており、バージョン5.20241.19で修正されました。
なお、スクロール遅延が起こるのは複数行レイアウトのうち、単一の列で構成されているセルのみです。
修正版を適用しない場合の回避方法として、以下のコードを追加する方法がございます。
import {
_SelectionHandler,
CellRange,
} from '@grapecity/wijmo.grid';
export enum SelMove {
None,
Next,
Prev,
NextPage,
PrevPage,
Home,
End,
NextCell,
PrevCell,
NextEditableCell,
PrevEditableCell,
}
_SelectionHandler.prototype.moveSelection = function (e, t, i) {
var o = this._g,
n = this._sel,
l =
i && o.anchorCursor
? new CellRange(n.row2, n.col2)
: new CellRange(n.row, n.col);
this._adjustReferenceCell(l, e, t);
var r = l.row,
s = l.col,
a = o.columns,
c = Math.max(0, o._szClient.height - o.columnHeaders.height),
u = SelMove,
d = -1,
h = o.getMergedRange(o.cells, r, s);
h &&
(t == u.NextCell || t == u.NextEditableCell
? (s = h.rightCol)
: (t != u.PrevCell && t != u.PrevEditableCell) || (s = h.leftCol));
switch (t) {
case u.NextCell:
case u.NextEditableCell:
d = s;
(s = this._getNextColumnCell(r, d, t)) != d &&
(h = o.getMergedRange(o.cells, r, s)) &&
s < h.col2 &&
(s = h.col2);
if (s == d)
for (;;) {
if (r == o.rows.length - 1) {
s = l.col;
r = l.row;
break;
}
var _ = !1;
if ((r = this._getNextRowCell(r, s, t)) > l.row) {
d = -1;
for (; d < a.length; ) {
if ((s = this._getNextColumnCell(r, d, t)) == d) {
_ = !0;
break;
}
(h = o.getMergedRange(o.cells, r, s)) &&
s < h.col2 &&
(s = h.col2);
break;
}
if (_) continue;
}
break;
}
o.select(r, s);
break;
case u.PrevCell:
case u.PrevEditableCell:
d = s;
(s = this._getNextColumnCell(r, d, t)) != d &&
(h = o.getMergedRange(o.cells, r, s)) &&
s > h.col &&
(s = h.col);
if (s == d)
for (;;) {
if (0 == r) {
s = l.col;
r = l.row;
break;
}
_ = !1;
if ((r = this._getNextRowCell(r, s, t)) < l.row) {
d = a.length;
for (; d > -1; ) {
(s = this._getNextColumnCell(r, d, t)) != d
? (h = o.getMergedRange(o.cells, r, s)) &&
s > h.col &&
(s = h.col)
: (_ = !0);
break;
}
if (_) continue;
}
break;
}
o.select(r, s);
break;
default:
if (!this.moveHeaderCells(e, t, r, s)) {
r = this._getNextRowCell(r, s, e, c);
s = this._getNextColumnCell(r, s, t, c);
i
? (o.selection = o.anchorCursor
? new CellRange(n.row, n.col, r, s)
: new CellRange(r, s, n.row2, n.col2))
: o.select(r, s);
break;
}
}
};
旧文書番号
83438