找回密码
 立即注册

QQ登录

只需一步,快速开始

zhaozimingT

高级会员

38

主题

207

帖子

1284

积分

高级会员

积分
1284

[已处理] 双击事件

zhaozimingT
高级会员   /  发表于:2017-4-14 12:29  /   查看:3869  /  回复:9
本帖最后由 ClarkPan 于 2017-4-24 11:47 编辑

那个帖子长了,我重新开了个贴。 还是那个双击事件没有用的问题。 没有报任何js 的问题。         activeSheet.getCell(row,col).value(table).cellType(new MyCellType());                                                doubleclikc(activeSheet);  我在自定义方法后面给sheet注册双击事件。 方法代码如下,但是无法实现,我测试的时候是123没有弹出,我不了解为什么。

<!--注册双击事件-->
        <script type="text/javascript">
               
                //        添加sheet        
                function addsheet_tb(activeSheet){
                        if(tbcount<1){
                        addbutton("标签");
                        addsheet((activeSheet.name())+"_"+"标签"+(++tbcount));
                }else{
                        addbutton("标签");
                        addsheet("标签"+(++tbcount));
                }
                }
    function doubleclikc(activeSheet){
            //给单元格注册双击事件(添加sheet)
        activeSheet.bind(GC.Spread.Sheets.Events.CellDoubleClick, function (sender, args) {
                           if(args.sheetArea === GC.Spread.Sheets.SheetArea.colHeader){
                                   alert("123");
                                   var selectedRanges = activeSheet.getSelections();
                         for(var i = 0; i < selectedRanges.length; i++){
                                       
                                for(var row = selectedRanges.row;row<selectedRanges.row+selectedRanges.rowCount;row++)
                                {
                                         for(var col= selectedRanges.col;col<selectedRanges.col+selectedRanges.colCount;col++)
                                                 {
                                                if(activeSheet.getTag(row, col)=="sublist"){
                                                        addsheet((activeSheet.name())+"_"+(sheets_count++));
                                                        $(".return").css("display","block");
                                                        $("#bt_tb_div").css("display","none");
                                                        $(".return_tb").css("display","none");
                                                        break;
                                                }else if (activeSheet.getTag(row, col)=="label"){
                                                        if(tbcount<1){
                                                                addsheet_tb(activeSheet);
                                                                addsheet_tb(activeSheet);
                                                        }else{
                                                                addsheet_tb(activeSheet);
                                                        }
                                                        //添加完了之后就把按钮显示出来
                                                        $("#bt_tb_div").css("display","block");
                                                        $(".return_tb").css("display","block");
                                                        
                                                                  var index_sheet = spread.getSheetIndex("标签"+(tbcount-1));
                                                                  spread.setActiveSheetIndex(index_sheet);
                                                        break;
                                                }
                                            }
                                }               
                        }
            }
        
                });
        }
               
        </script>

9 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-4-14 13:50:57
沙发
  if(args.sheetArea === GC.Spread.Sheets.SheetArea.colHeader){
你有这个条件,你现在如果双击列头才会alert
回复 使用道具 举报
zhaozimingT
高级会员   /  发表于:2017-4-14 17:14:30
板凳
     双击完后可以让单元格处于不编辑状态吗?
回复 使用道具 举报
CCKan
银牌会员   /  发表于:2017-4-14 18:26:02
地板
黑科技,在你上面的方法中: args.ctrlKey = true;
正常做法:
绑定 GC.Spread.Sheets.Events.EditStarting 事件,然后将
cancel = true;
置为 true
回复 使用道具 举报
zhaozimingT
高级会员   /  发表于:2017-4-15 17:50:00
5#
  有个问题,你把那个图片设置为了tag 然后显示出来了。 但是我的tag 需要存其他值怎么办呢,
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-4-17 12:26:46
6#
tag可以保存object,
所有信息都放tag中。

tag.image
tag.yourInfo
回复 使用道具 举报
zhaozimingT
高级会员   /  发表于:2017-4-17 14:20:13
7#
本帖最后由 zhaozimingT 于 2017-4-17 14:34 编辑

                                                activeSheet.setTag(row, col, {value: "xx"});  值赋不上去 。 我debug 了一下,没有js报错,正常执行那一步了的, 获取如图: blob144354552.png
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-4-17 17:55:40
8#
你这样相当于重新赋值。
var tag = sheet.getTag() || {}
tag.value = "xx"
sheet.setTag(row, col, tag)
回复 使用道具 举报
zhaozimingT
高级会员   /  发表于:2017-4-17 18:31:52
9#
blob115320433.png         tag = activeSheet.getTag(row,col)  || {};
                                                tag.value = text;
                                                activeSheet.setTag(row, col, tag) ; 我把代码复制进去,getTag(row,col) 试过放行,列 也试过不放。 都不能设置值。 为什么。 我f12 console 只有img 没有value
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-4-18 11:50:25
10#
Image 那里设置tag也需要改

  1.     MyCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
  2.         //Paints a cell on the canvas.
  3.         if (value) {
  4.             GC.Spread.Sheets.CellTypes.Base.prototype.paint.apply(this, [ctx, value, x, y, w, h, style, options]);
  5.             var sheet = options.sheet, row = options.row, col = options.col;
  6.             var tag = sheet.getTag(row, col) || {};
  7.             if(tag && tag.img){
  8.               ctx.drawImage(tag.img, x + w - h + 1, y + 1, h - 2, h - 2);
  9.             }
  10.             else{
  11.                 var img = new Image();  
  12.                 img.src = iconImage;
  13.                 img.onload = function(){
  14.                     tag.img = img;
  15.                     sheet.setTag(row, col, tag)
  16.                     sheet.repaint();
  17.                 }
  18.             }
  19.         }
  20.     };
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部