作成日: 2020/06/12 最終更新日: 2020/08/26
文書種別
不具合
状況
修正済み
詳細
FlexGridが詳細行を含む場合、HeaderTemplateクラスおよびHeaderTemplateCellクラスを使用してヘッダーテンプレートを定義しセルを結合しても、実行時にセルの結合が解除されて表示されます。
回避方法
この問題は2020J v2(4.5.20202.288)で修正されました。
※修正版を適用しない場合の回避方法は以下の通りです。
JavaScriptでヘッダーセルテンプレートを取得し、getMergedRange関数をオーバーライドして、DetailRowとHeaderTemplateが正しく動作するようにします。
<script type="text/javascript">
// ヘッダーセルテンプレート取得
var temp =@Html.Raw(Json.Serialize(Model.Template));
c1.documentReady(function () {
var grid = wijmo.Control.getControl("#grid");
var _oldFunction = grid.mergeManager.__proto__.getMergedRange;
var cells = temp.cells;
// mergeManager関数をオーバーライド
grid.mergeManager.__proto__.getMergedRange = function (panel, r, c, clip) {
//セルのデフォルトの結合
if (panel.cellType == 1) {
return _oldFunction.call(this, panel, r, c, clip);
}
//HeaderTemplateに合わせてColumnHeaderをマージ
var rng = new wijmo.grid.CellRange(r, c);
if (panel.cellType == wijmo.grid.CellType.ColumnHeader) {
for (var i = 0; i < cells.length; i++) {
var range = new wijmo.grid.CellRange(cells[i].row, cells[i].col, cells[i].row + cells[i].rowSpan - 1, cells[i].col + cells[i].colSpan - 1);
if (range.contains(rng)) {
return range;
}
}
}
return rng;
}
})
</script>
※修正版を適用しない場合の回避方法は以下の通りです。
JavaScriptでヘッダーセルテンプレートを取得し、getMergedRange関数をオーバーライドして、DetailRowとHeaderTemplateが正しく動作するようにします。
<script type="text/javascript">
// ヘッダーセルテンプレート取得
var temp =@Html.Raw(Json.Serialize(Model.Template));
c1.documentReady(function () {
var grid = wijmo.Control.getControl("#grid");
var _oldFunction = grid.mergeManager.__proto__.getMergedRange;
var cells = temp.cells;
// mergeManager関数をオーバーライド
grid.mergeManager.__proto__.getMergedRange = function (panel, r, c, clip) {
//セルのデフォルトの結合
if (panel.cellType == 1) {
return _oldFunction.call(this, panel, r, c, clip);
}
//HeaderTemplateに合わせてColumnHeaderをマージ
var rng = new wijmo.grid.CellRange(r, c);
if (panel.cellType == wijmo.grid.CellType.ColumnHeader) {
for (var i = 0; i < cells.length; i++) {
var range = new wijmo.grid.CellRange(cells[i].row, cells[i].col, cells[i].row + cells[i].rowSpan - 1, cells[i].col + cells[i].colSpan - 1);
if (range.contains(rng)) {
return range;
}
}
}
return rng;
}
})
</script>
旧文書番号
85698