找回密码
 立即注册

QQ登录

只需一步,快速开始

pian493

初级会员

42

主题

71

帖子

351

积分

初级会员

积分
351
pian493
初级会员   /  发表于:2022-10-29 16:19  /   查看:1113  /  回复:4
1金币
  如题,以下代码中的  addConnector 会触发 ShapeRemoved事件,预期是不触发该事件。
sheet.bind(GC.Spread.Sheets.Events.ShapeRemoved, function (e, info) {
            if(info.shape.name()=='connectorShape'){
                return ;
            }
            console.log(info.shape.name());
        });

sheet.shapes.addConnector('connectorShape', GC.Spread.Sheets.Shapes.ConnectorType.elbow, 200, 50, 300, 100);




最佳答案

查看完整内容

请问你是通过代码添加连接器触发的事件吗?我这边没有复现这个问题。另外,SpreadJS的事件会通过调整UI而触发的,通过代码是不会触发事件的。 另外,我通过设计器直接添加连接器形状,也不会触发ShapeRemoved事件,可以排查一下是否触发了其他事件,例如ShapeChanged。

4 个回复

倒序浏览
最佳答案
最佳答案
有点东西悬赏达人认证
初级会员   /  发表于:2022-10-29 16:19:25
来自 2#
请问你是通过代码添加连接器触发的事件吗?我这边没有复现这个问题。另外,SpreadJS的事件会通过调整UI而触发的,通过代码是不会触发事件的。
image.png296171874.png

另外,我通过设计器直接添加连接器形状,也不会触发ShapeRemoved事件,可以排查一下是否触发了其他事件,例如ShapeChanged。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-31 09:35:20
3#
如楼上所述,经测试未能复现您的问题。
请详细描述复现此问题的步骤,并提供相关测试demo,这边来实际测试下。
回复 使用道具 举报
pian493
初级会员   /  发表于:2022-11-10 13:55:54
4#
Lynn.Dou 发表于 2022-10-31 09:35
如楼上所述,经测试未能复现您的问题。
请详细描述复现此问题的步骤,并提供相关测试demo,这边来实际测试 ...

是的,addConnector不会触发。是这个方法sheet.shapes.group触发了shapeRemoved事件。代码如下,请问怎么解决呢?


const {row,col,rowCount,colCount} = selectedAreaInfo;
const {left,right,top,bottom} = calcPositionOfSelectedArea(selectedAreaInfo);
const shapeColor = 'red';
const shapeName = 'shapeName';

const sheet = getActiveSheet_tool();
let groupShapes = [
    {
        flag:"_top",
        params:[left, top, right, top]
    },
    {
        flag:"_bottom",
        params:[left, bottom, right, bottom]
    },
    {
        flag:"_left",
        params:[left, top, left, bottom]
    },
    {
        flag:"_right",
        params:[right, top, right, bottom]
    }
].map(item=>{
    let tempShape = sheet.shapes.addConnector(shapeName + item.flag,
      GC.Spread.Sheets.Shapes.ConnectorType.straight, ...item.params);
    let oldStyle = tempShape.style();
    oldStyle.line.color = shapeColor;
    tempShape.style(oldStyle);
    return tempShape;
})


let gShape = sheet.shapes.group(groupShapes);
return false;

let nameTemp = shapeName + "_group_" + new Date().getTime();
gShape.name(nameTemp);


// if(/*打上tag之前调用*/isShapesHaveIntersection()){
//     removeOneShape(nameTemp,false);//不可删除交集上的tag
//     return toastr.warning('不可以有交集哦')
// }

gShape.allowMove(false);
gShape.allowResize(false);
gShape.allowRotate(false);

//shape里的cell设置tag
for(let i=row;i<row+rowCount;i++){
    for(let j=col;j<col+colCount;j++){
        const {shapeName} = getTag_tool(i,j);
        setTag_tool(i,j,{shapeName: shapeName ? [nameTemp,shapeName].join(window.defineVarObj_g.shapeNameSeparator) : nameTemp});
    }
}

shapesInfoHandler_shapeHelper({type:'addShape',shapeName:nameTemp,cellsInfo:{/*row,col,*/rowCount,colCount}});

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-10 17:54:38
5#
本帖最后由 Lynn.Dou 于 2022-11-11 09:45 编辑

注意到关于此问题您另开了新帖,那本帖就先结贴了,后续在新帖中交流。
https://gcdn.grapecity.com.cn/fo ... 57126&fromuid=59119
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部