作成日: 2024/05/16 最終更新日: 2024/08/07
文書種別
不具合
状況
修正済み
詳細
複数行分で構成された列の一部を非表示(visible = false)にすると、データセルに正しく値が表示されなくなります。
例:以下のようなレイアウトの時に、A列を非表示にするとB列に該当するデータセルに値が表示されません。
| B |
回避方法
この問題はバージョン5.20241.19で修正されました。
修正版を適用しない場合の回避方法は次の通りです。
下記のコードを実装して、_renderCellメソッドを上書きします。
wijmo.grid.GridPanel.prototype._renderCell = function (e, t, i, o, n, r) {
var l = this._g
, s = l.getMergedRange(this, t, i, !1);
if (s) {
for (var a = Math.max(o.row, s.row); a < t; a++)
if (this.rows[a].renderSize)
return r;
for (a = Math.max(o.col, s.col); a < i; a++)
if (this.columns[a].renderSize)
return r;
if (t >= s.row && t <= s.row2 && i > s.col && i <= s.col2 && this._ct === wijmo.grid.CellType.Cell && s.isSingleCell)
return r;
var u = this.columns.frozen;
if (u && s.col < u && s.col2 >= u && i > s.col)
return r;
if (!this.columns[i].isVisible)
return r;
if (s.leftCol != i) {
if (this._ct == wijmo.grid.CellType.ColumnHeader || this._ct == wijmo.grid.CellType.TopLeft)
for (var c = s.leftCol; c < i; c++)
if (this.columns[c].isVisible)
return r
}
}
var d = this.columns[i];
if ((!d || d.renderSize <= 0) && (!s || s.getRenderSize(this).width <= 0))
return r;
var h = e.children[r];
if (h && !n && this._recycle && l._lazyRender && !l.activeEditor) {
var _ = h[wijmo.grid.GridPanel._INDEX_KEY];
_ && _.row == t && _.col == i && _.rng == s && t >= this.rows.frozen && i >= this.columns.frozen && (n = !0)
}
var p = wijmo.grid.SelectedState
, f = this.getSelectedState(t, i, s)
, g = f == p.Cursor || f == p.Active
, m = !1;
switch (this.cellType) {
case wijmo.grid.CellType.RowHeader:
case wijmo.grid.CellType.ColumnHeader:
case wijmo.grid.CellType.TopLeft:
m = !0
}
if (h && n) {
wijmo.toggleClass(h, "wj-state-active", g);
wijmo.toggleClass(h, m ? "wj-focus-header-cell" : "wj-state-selected", f == p.Cursor);
wijmo.toggleClass(h, "wj-state-multi-selected", f == p.Selected);
var w = h.querySelector(".wj-column-selector");
w ? g || f != p.None ? wijmo.setAttribute(h, "aria-selected", !!w.checked) : wijmo.setAttribute(h, "aria-selected", null) : wijmo.setAttribute(h, "aria-selected", !(!g && f == p.None) || null);
g && (this._activeCell = h);
return r + 1
}
h || (h = wijmo.createElement(wijmo.grid.GridPanel._HTML_CELL, e));
wijmo.setAttribute(h, "aria-colindex", i + 1);
g && (this._activeCell = h);
if (this._ct == wijmo.grid.CellType.Cell) {
wijmo.setAttribute(h, "role", "gridcell");
wijmo.setAttribute(h, "aria-selected", !(f == p.None && !g) || null);
var C = !l.canEditCell(t, i) || null;
wijmo.setAttribute(h, "aria-readonly", C);
wijmo.setAttribute(h, "aria-required", C ? null : d.getIsRequired())
}
l.cellFactory.updateCell(this, t, i, h, s);
h[wijmo.grid.GridPanel._INDEX_KEY] = {
row: t,
col: i,
rng: s,
panel: this
};
return r + 1
}