本帖最后由 Lynn.Dou 于 2021-10-25 17:49 编辑
提及 hover提示需求,数据Excel的小伙伴可能第一会想到 批注,即如下:
当然学习使用SpreadJS的小伙伴,也了解到SpreadJS提供了自定义单元格类型功能,
可以实现hover提示的需求。
有小伙伴疑问,对于行/列头单元格,能否实现上述功能呢?
批注是不支持的,SJS在设计上与Excel保持一致,仅支持 在表单视图区域内单元格 设置批注。
不过SpreadJS支持行列头自定义单元格,所以可以借此实现 行列头hover提示 的需求:
具体可以参考学习指南:
https://demo.grapecity.com.cn/sp ... ustom-header/purejs
附件为此需求示例demo,主要代码如下:
- function TipCellType() {
- }
- TipCellType.prototype = new GC.Spread.Sheets.CellTypes.Text();
- TipCellType.prototype.getHitInfo = function(x, y, cellStyle, cellRect, context) {
- return {
- x: x,
- y: y,
- row: context.row,
- col: context.col,
- cellStyle: cellStyle,
- cellRect: cellRect,
- sheetArea: context.sheetArea
- };
- }
- TipCellType.prototype.processMouseEnter = function(hitinfo) {
- if (!this._toolTipElement) {
- var div = document.createElement("div");
- $(div).css("position", "absolute")
- .css("border", "1px #C0C0C0 solid")
- .css("box-shadow", "1px 2px 5px rgba(0,0,0,0.4)")
- .css("font", "9pt Arial")
- .css("background", "white")
- .css("padding", 5);
- this._toolTipElement = div;
- }
- $(this._toolTipElement).text("Cell [R:" + hitinfo.row + "] : [C:" + hitinfo.col + "]")
- .css("top", hitinfo.y + 15)
- .css("left", hitinfo.x + 15);
- $(this._toolTipElement).hide();
- document.body.insertBefore(this._toolTipElement, null);
- $(this._toolTipElement).show("fast");
- };
- TipCellType.prototype.processMouseLeave = function(hitinfo) {
- if (this._toolTipElement) {
- document.body.removeChild(this._toolTipElement);
- this._toolTipElement = null;
- }
- };
复制代码- // 给列头单元格设置此单元格类型
- sheet.setCellType(0, -1, new TipCellType(), GC.Spread.Sheets.SheetArea.colHeader);
复制代码 最终效果图如下:
完整代码请参考附件demo。
|
|