オーバーライドしたgetHitInfoメソッドが結合セルで正常に動作しない
対象製品
SpreadJS 9J
状況
修正済み
詳細
カスタムセル型を作成し、結合したセルで使用すると、getHitInfoメソッドのオバーライド処理が正常に動作しない現象が発生します。
【現象再現手順】
--------------------------------------------------
1. 以下の再現コードを実行します
2. 第一列をクリックします
-列が選択されない現象が発生します
--------------------------------------------------
【現象再現コード】
--------------------------------------------------
//下記のコードはHTML上のDOM要素、"#ss"に対し、
//SPREADを展開することを前提としたコードです。
var spreadNS = $.wijmo.wijspread;
$(document).ready(function () {
$("#ss").wijspread({ sheetCount: 2 });
var spread = $("#ss").wijspread("spread");
initSpread(spread);
});
function initSpread(spread) {
/**
* ハイパーリンクセルタイプのカスタマイズ
*/
function CustomHyperlinkCellType(Hdr) {
$.wijmo.wijspread.HyperLinkCellType.apply(this);
this.text(Hdr);
}
CustomHyperlinkCellType.prototype = new $.wijmo.wijspread.HyperLinkCellType();
CustomHyperlinkCellType.prototype.getHitInfo = function (x, y, cellStyle, cellRect, context) {
if (context) {
return { x: x, y: y, row: context.row, col: context.col, cellRect: cellRect,
cellStyle: cellStyle,
sheetArea: context.sheetArea, isReservedLocation: true, sheet: context.sheet };
}
return null;
};
CustomHyperlinkCellType.prototype.processMouseDown = function (hitInfo) {
};
CustomHyperlinkCellType.prototype.processMouseMove = function (hitInfo) {
};
CustomHyperlinkCellType.prototype.processMouseUp = function (hitInfo) {
var sheet = hitInfo.sheet, sheetArea = hitInfo.sheetArea,
row = hitInfo.row, col = hitInfo.col;
console.log("row:" + row + " col:" + col);
};
CustomHyperlinkCellType.prototype.processMouseEnter = function (hitInfo) {};
CustomHyperlinkCellType.prototype.processMouseLeave = function (hitInfo) {};
var sheet = spread.getSheet(0);
sheet.addSpan(0, 0, 1, 3, $.wijmo.wijspread.SheetArea.colHeader);
sheet.getCell(0, 0, $.wijmo.wijspread.SheetArea.colHeader).cellType(new CustomHyperlinkCellType("aaa"));
};
--------------------------------------------------
【現象再現手順】
--------------------------------------------------
1. 以下の再現コードを実行します
2. 第一列をクリックします
-列が選択されない現象が発生します
--------------------------------------------------
【現象再現コード】
--------------------------------------------------
//下記のコードはHTML上のDOM要素、"#ss"に対し、
//SPREADを展開することを前提としたコードです。
var spreadNS = $.wijmo.wijspread;
$(document).ready(function () {
$("#ss").wijspread({ sheetCount: 2 });
var spread = $("#ss").wijspread("spread");
initSpread(spread);
});
function initSpread(spread) {
/**
* ハイパーリンクセルタイプのカスタマイズ
*/
function CustomHyperlinkCellType(Hdr) {
$.wijmo.wijspread.HyperLinkCellType.apply(this);
this.text(Hdr);
}
CustomHyperlinkCellType.prototype = new $.wijmo.wijspread.HyperLinkCellType();
CustomHyperlinkCellType.prototype.getHitInfo = function (x, y, cellStyle, cellRect, context) {
if (context) {
return { x: x, y: y, row: context.row, col: context.col, cellRect: cellRect,
cellStyle: cellStyle,
sheetArea: context.sheetArea, isReservedLocation: true, sheet: context.sheet };
}
return null;
};
CustomHyperlinkCellType.prototype.processMouseDown = function (hitInfo) {
};
CustomHyperlinkCellType.prototype.processMouseMove = function (hitInfo) {
};
CustomHyperlinkCellType.prototype.processMouseUp = function (hitInfo) {
var sheet = hitInfo.sheet, sheetArea = hitInfo.sheetArea,
row = hitInfo.row, col = hitInfo.col;
console.log("row:" + row + " col:" + col);
};
CustomHyperlinkCellType.prototype.processMouseEnter = function (hitInfo) {};
CustomHyperlinkCellType.prototype.processMouseLeave = function (hitInfo) {};
var sheet = spread.getSheet(0);
sheet.addSpan(0, 0, 1, 3, $.wijmo.wijspread.SheetArea.colHeader);
sheet.getCell(0, 0, $.wijmo.wijspread.SheetArea.colHeader).cellType(new CustomHyperlinkCellType("aaa"));
};
--------------------------------------------------
回避方法
SpreadJS 9J SP1(Ver.3.20152.21)で修正済み
SpreadJS 9J SP1(Ver.3.20152.21)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
連結された範囲の各セルにセル型を設定することで現象の回避が可能です。
【再現コードへの回避策適用例】
--------------------------------------------------
sheet.addSpan(0, 0, 1, 3, $.wijmo.wijspread.SheetArea.colHeader);
sheet.getCell(0, 0, $.wijmo.wijspread.SheetArea.colHeader).cellType(new CustomHyperlinkCellType("aaa"));
sheet.getCell(0, 1, $.wijmo.wijspread.SheetArea.colHeader).cellType(new CustomHyperlinkCellType("aaa"));
sheet.getCell(0, 2, $.wijmo.wijspread.SheetArea.colHeader).cellType(new CustomHyperlinkCellType("aaa"));
--------------------------------------------------
SpreadJS 9J SP1(Ver.3.20152.21)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
連結された範囲の各セルにセル型を設定することで現象の回避が可能です。
【再現コードへの回避策適用例】
--------------------------------------------------
sheet.addSpan(0, 0, 1, 3, $.wijmo.wijspread.SheetArea.colHeader);
sheet.getCell(0, 0, $.wijmo.wijspread.SheetArea.colHeader).cellType(new CustomHyperlinkCellType("aaa"));
sheet.getCell(0, 1, $.wijmo.wijspread.SheetArea.colHeader).cellType(new CustomHyperlinkCellType("aaa"));
sheet.getCell(0, 2, $.wijmo.wijspread.SheetArea.colHeader).cellType(new CustomHyperlinkCellType("aaa"));
--------------------------------------------------