找回密码
 立即注册

QQ登录

只需一步,快速开始

码出一个新世界

初级会员

54

主题

144

帖子

398

积分

初级会员

积分
398

微信认证勋章

码出一个新世界
初级会员   /  发表于:2016-4-19 16:20  /   查看:6139  /  回复:9
SpreadJS如何锁定行即把某些行设置成只读不可编辑的,又如何动态锁定,是绑定完数据之后根据条件循环锁定,还是在绑定数据的时候就可以根据条件自动锁定

9 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-19 16:59:00
沙发
您看下http://demo.gcpowertools.com.cn/ ... /samples/protection
通过style对行锁定。

需要绑定完数据之后根据条件循环锁定
回复 使用道具 举报
码出一个新世界
初级会员   /  发表于:2016-4-19 18:23:17
板凳
没有行级锁定吗,只能一个单元格一个单元格的锁
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-19 18:28:46
地板

        sheet.setStyle(9, -1, style);
这个就是行级的,列为-1 表示整行
回复 使用道具 举报
码出一个新世界
初级会员   /  发表于:2016-4-19 20:01:41
5#
我已经设置样式Locked=true,但是还是不锁定,后来发现是ListSpread.isPaintSuspended的值设成了false,后来把ListSpread.isPaintSuspended的值设成true之后ListSheet.setColumnVisible(0, false)就不起作用了,而且锁定的行还能点击进去,只不过输入的值写不到单元格内,请问这是什么回事?我怎么做才能把某一列隐藏同时把某些行锁定???代码如下:
                        //绑定定制的列
                        ListSheet.bindColumns(colInfos);
                        ListSpread.isPaintSuspended(true);
                        //隐藏ID列
                        ListSheet.setColumnVisible(0, false);
                        //循环处理锁定行和最后一列
                        ListSheet.addColumns(9, 1);
                        for (var i = 0; i < ListSheet.getRowCount() ; i++) {
                            if (html.rows[i].STATUSNAME == "注册") {
                                //如果可以注册就设置按钮类型的单元格
                                var b1 = new GcSpread.Sheets.ButtonCellType();
                                b1.buttonBackColor('blue');
                                b1.text(html.rows[i].STATUSNAME);
                                ListSheet.getCell(i, 9).cellType(b1);
                            }
                            else {
                                ListSheet.setValue(i, 9, "已注册");
                                //注册过的就锁定此行
                                var style = new GcSpread.Sheets.Style();
                                style.locked = true;//设置样式为锁定状态
                                //style.backColor = "gray";
                                ListSheet.setStyle(i, -1, style);//列为-1 表示整行
                            }
                        }
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-20 09:42:04
6#
首先isPaintSuspended是要成对出现的,他的目的是为了防止每次操作都去对页面进行重新绘制造成性能的损耗,在操作结束后将isPaintSuspended(false)。

设置locked后需要对保护表单 sheet.setIsProtected(true); 这样locked才能生效。
回复 使用道具 举报
码出一个新世界
初级会员   /  发表于:2016-4-20 10:18:30
7#
哦,那这样的话整个表单都锁定了,还必须把不锁定的行样式设置成不锁定状态
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-20 10:33:16
8#
对,和excel 一样。
这个就看您是锁定的多还是不锁定,如果锁定的多把sheet lock,然后不锁定的单元格设为fasle。反之。
回复 使用道具 举报
码出一个新世界
初级会员   /  发表于:2016-4-20 10:40:49
9#
好的 谢谢 明白了
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-4-20 10:52:43
10#
不客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部