SpreadJS图片排序

让浮动元素伴随行数据一起排序

发布于 2016/07/21 00:00

在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

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的开发者社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态