找回密码
 立即注册

QQ登录

只需一步,快速开始

luozhu1986

初级会员

21

主题

73

帖子

451

积分

初级会员

积分
451

活字格认证

[已处理] 单元格类型问题

luozhu1986
初级会员   /  发表于:2016-7-25 14:18  /   查看:3248  /  回复:9
循坏往单元格中添加 ButtonCellType,超过4个后面的ButtonCellType引用的是同一个,改变其中一个ButtonCellType的text时,其他几个会一起发生改变

var btnFile = new $.wijmo.wijspread.ButtonCellType();
btnFile.text("按 钮");
cell.cellType(btnFile);
cell.hAlign($.wijmo.wijspread.HorizontalAlign.center);

9 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-7-25 16:46:12
沙发
初始化不同的ButtonCellType 示例,然后设置

var btnFile1 = new $.wijmo.wijspread.ButtonCellType();
btnFile1.text("按 钮1");
cell1.cellType(btnFile1);

var btnFile2 = new $.wijmo.wijspread.ButtonCellType();
btnFile2.text("按 钮2");
cell2.cellType(btnFile2);
回复 使用道具 举报
luozhu1986
初级会员   /  发表于:2016-7-26 09:42:10
板凳
dexteryao 发表于 2016-7-25 16:46
初始化不同的ButtonCellType 示例,然后设置

var btnFile1 = new $.wijmo.wijspread.ButtonCellType();
...

问题我可能没讲清楚
超过4个后面的ButtonCellType引用的是同一个,改变其中一个ButtonCellType的text时,其他几个会一起发生改变
var rowCount =5;
var colCount=5;
for (var i = 0; i < rowCount; i++) {
        for (var j = 0; j < colCount; j++) {
                var cell = sheet.getCell(i, j);
                initFileCell(cell);
         }      
}
function initFileCell(cell) {
                var btnFile = new $.wijmo.wijspread.ButtonCellType();
                btnFile.text("详 情");
                cell.cellType(btnFile);
                cell.hAlign($.wijmo.wijspread.HorizontalAlign.center);
}


//注册按钮事件
spread.bind($.wijmo.wijspread.Events.ButtonClicked, function(e, args) {
                        var row = args.row, col = args.col;
                        var cellType = sheet.getCellType(row, col);
                        if ( cellType instanceof $.wijmo.wijspread.ButtonCellType) {
                                //弹出对话框改变按钮的文本
                                fileDiag.showDiag(enable);
                        }
                });
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-7-26 10:04:23
地板
还是没有太明白您的需求,您是希望文字一起变还是不一起变,你现在的代码是每个button是单独的,改变一个文字,其他不会改变的。
回复 使用道具 举报
luozhu1986
初级会员   /  发表于:2016-7-26 10:06:47
5#
dexteryao 发表于 2016-7-26 10:04
还是没有太明白您的需求,您是希望文字一起变还是不一起变,你现在的代码是每个button是单独的,改变一个文 ...

代码理论上是不会变,但实际是改变了,我想说的是这有可能是个BUG.
你写个demo测试一下就明白我的意思了
回复 使用道具 举报
luozhu1986
初级会员   /  发表于:2016-7-26 10:06:50
6#
dexteryao 发表于 2016-7-26 10:04
还是没有太明白您的需求,您是希望文字一起变还是不一起变,你现在的代码是每个button是单独的,改变一个文 ...

代码理论上是不会变,但实际是改变了,我想说的是这有可能是个BUG.
你写个demo测试一下就明白我的意思了
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-7-26 10:33:46
7#
因为我用的新版本,没有重现这个问题,您试下在click事件中修改  cellType.text("aa")的时候其他单元格也会变化

  1.   spread.bind(GcSpread.Sheets.Events.ButtonClicked, function(e, args) {
  2.                         var row = args.row, col = args.col;
  3.                         var cellType = sheet.getCellType(row, col);
  4.                         if ( cellType instanceof GcSpread.Sheets.ButtonCellType) {
  5.                                 //弹出对话框改变按钮的文本
  6.                                cellType.text("aa")
  7.                         }
  8.                 });
复制代码
回复 使用道具 举报
luozhu1986
初级会员   /  发表于:2016-7-26 10:50:06
8#
dexteryao 发表于 2016-7-26 10:33
因为我用的新版本,没有重现这个问题,您试下在click事件中修改  cellType.text("aa")的时候其他单元格也会 ...

新版我也试过了,都有这个问题
实际场景描述的有点出入,因为每行的数据类型结构是一样的,我采取的是复制
sheet.copyTo(activeRow + count, 0, activeRow + row, 0, 1, colCount, $.wijmo.wijspread.CopyToOption.All);
回复 使用道具 举报
luozhu1986
初级会员   /  发表于:2016-7-26 10:50:10
9#
dexteryao 发表于 2016-7-26 10:33
因为我用的新版本,没有重现这个问题,您试下在click事件中修改  cellType.text("aa")的时候其他单元格也会 ...

新版我也试过了,都有这个问题
实际场景描述的有点出入,因为每行的数据类型结构是一样的,我采取的是复制
sheet.copyTo(activeRow + count, 0, activeRow + row, 0, 1, colCount, $.wijmo.wijspread.CopyToOption.All);

评分

参与人数 1金币 +500 收起 理由
dexteryao + 500 感谢反馈

查看全部评分

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-7-26 11:31:16
10#
复制的话,cellType也是会被复制的,他们都是同一个引用,所以会一起变。这个地方如果您是复制的话,需要在复制后对区域内的buttoncell重新循环初始化一次。

这个的确是设计上的一些问题,感谢您的反馈。

评分

参与人数 1满意度 +5 收起 理由
luozhu1986 + 5 谢谢版主的耐心解答

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部