在SpreadJS中可以图片,图片位置可以固定在页面上也可以伴随单元格移动,对于固定在单元格上的图片,如果希望单元格排序后图片伴随单元格一起移动,可以通过在RangeSorting和RangeSorted事件中移动图片来实现。

排序前

8D2.tmp

排序后

4A14.tmp

主要思路是在排序前我们将所有图片的位置记录在单元格tag中,排序结束后从tag中取出图片名称,将该图片位置设置为当前单元格。

sheet.bind(GcSpread.Sheets.Events.RangeSorting, function(e, info) {
    var sheet = info.sheet;
    var pictures = sheet.getPictures();
    picturePostionCache = [];
    for (var i = 0; i < pictures.length; i++) {
        var picture = pictures[i];
        if (!picture.fixedPosition()) {
            var startRow = picture.startRow();
            var startColumn = picture.startColumn();
            console.log(picture.name())
            var pictureCell = sheet.getCell(startRow, startColumn)
            var tag = pictureCell.tag() || {};
            if (!tag.pictureNames) {
                tag.pictureNames = [];
            }
            tag.pictureNames.push(picture.name());
            pictureCell.tag(tag);
        }
    }
});
sheet.bind(GcSpread.Sheets.Events.RangeSorted, function(e, info) {
    var sheet = info.sheet;
    for (var i = 0; i < sheet.getRowCount(); i++) {
        for (var j = 0; j < sheet.getColumnCount(); j++) {
            var cell = sheet.getCell(i, j)
            var tag = cell.tag();
            if (tag && tag.pictureNames && tag.pictureNames.length > 0) {
                for (var k = 0; k < tag.pictureNames.length; k++) {
                    var picture = sheet.findPicture(tag.pictureNames[k]);
                    picture.startRow(cell.row);
                    picture.startColumn(cell.col);
                }
                tag.pictureNames = null;
            }
        }
    }
});

 

RunJS在线示例地址:http://runjs.cn/detail/o0jb80fm

 

更多资源

SpreadJS中文学习指南:http://demo.grapecity.com.cn/SpreadJS/TutorialSample/#/samples

SpreadJS在线英文产品文档:http://sphelp.grapecity.com/webhelp/SpreadJSWeb/webframe.html#welcome.html

如果您对SpreadJS产品感兴趣,可以到官方网站下载试用:/developer/spreadjs

如果你有疑问,可以到GCDN论坛获得技术支持:http://gcdn.grapecity.com.cn