看到了v9的实例,并且在项目中使用了如下代码:
$(document).ready(function () {
var spread = GcSpread.Sheets.findControl(document.getElementById('bydy'));
var sheet = spread.getActiveSheet();
var defaultStyle = sheet.getDefaultStyle();
defaultStyle.cellType = new NumberCellType();
sheet.setDefaultStyle(defaultStyle);
});
function NumberCellType() {
}
NumberCellType.prototype = new GcSpread.Sheets.TextCellType();
NumberCellType.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
};
}
NumberCellType.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");
};
NumberCellType.prototype.processMouseLeave = function (hitinfo) {
if (this._toolTipElement) {
document.body.removeChild(this._toolTipElement);
this._toolTipElement = null;
}
};
执行之后报了如图的错误:
所以放弃了上面的方式,还是使用了控件自带的floatObject,代码如下:
var customFloatingObject = new GcSpread.Sheets.CustomFloatingObject("f1", 10, 10, 100,50);
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", "blue")
.css("filter", "alpha(opacity:70)")
.css("padding", 5);
customFloatingObject.Content(div);
sheet.addFloatingObject(customFloatingObject);
customFloatingObject.startRow(args.row);
customFloatingObject.startColumn(args.col);
customFloatingObject.startRowOffset(10);
customFloatingObject.startColumnOffset(10);
但是现在遇到一点问题:
我这个浮动div的目的是,用户在双击单元格或者输入时,如果单元格的lock属性为true(即单元格不可编辑的话),就用这个悬浮div提示他单元格不能编辑.
可是如果lock是true,用户直接用键盘输入或者双击,是没法触发editStarting事件的,那我只能在cellDoubleClick事件上绑定该方法,可是如果不双击,直接敲键盘,应该用什么事件呢?
|