找回密码
 立即注册

QQ登录

只需一步,快速开始

chaoren

初级会员

16

主题

67

帖子

205

积分

初级会员

积分
205
chaoren
初级会员   /  发表于:2018-9-26 16:15  /   查看:7643  /  回复:11
image.png108250731.png 如题我单击单元格就进入到输入状态,不用双击才能进入,其次,我想单击就显示下拉,而且下拉无法人为输入数值 image.png291337889.png ,不想这样 image.png878213806.png ,不知道有没有方法实现,以及excel 导入时候会出右边跟下面很大一块空白是因为什么呢 image.png286322631.png

11 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-9-26 17:58:38
沙发
您好,对于您的问题:

1、我把实现的Demo贴出来了:
  1. sheet.bind(GC.Spread.Sheets.Events.CellClick, function (sender, args) {
  2.             var sheet = args.sheet;
  3.             var selection = sheet.getSelections();
  4.             if(selection.length === 1){
  5.                 var rCount = selection[0].rowCount;
  6.                 var cCount = selection[0].colCount;
  7.                 var row = selection[0].row;
  8.                 var col = selection[0].col;
  9.                 if(rCount === 1 && cCount === 1){
  10.                     sheet.startEdit(true);
  11.                 }
  12.             }
  13.         });
复制代码


2、不要用Validator的下拉菜单,用comboboxcelltype即可:

https://demo.grapecity.com.cn/Sp ... os/comboBoxCellType

将ComboBox实例设置为不可改即可,代码是:

  1. var combo = new spreadNS.CellTypes.ComboBox();
  2.         combo.items([{ text: "Oranges", value: "11k" }, { text: "Apples", value: "15k" }, { text: "Grape", value: "100k" }])
  3.             .editorValueType(spreadNS.CellTypes.EditorValueType.text);

  4.         // 设置成false后,无法手动输入单元格的值
  5.         combo.editable(false);
复制代码


3、表格的行、列都有数量,在没有行列的地方就会显示空白,

您可以通过增加行、列或者将外层的div设置长宽的方式来避免。
回复 使用道具 举报
chaoren
初级会员   /  发表于:2018-9-27 09:37:59
板凳
KevinChen 发表于 2018-9-26 17:58
您好,对于您的问题:

1、我把实现的Demo贴出来了:

回1、单元格单击事件,最后的sheet.startEdit(true),这个事件应该是针对整个页签生效的吧

回2、因为我们使用的是excel导入,而excel使用的下拉菜单是使用有效性,对应于spread里面的validator下拉菜单是吧,那样validator菜单无法做到combobox的效果是吗?无法做到单击选择下拉的功能吗


回3、即使用外层div限制spread大小,但是spread 内部有滚动条,依然也是会滚动到空白区域的吧,也就是说暂时没有好的解决办法是吗
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-9-27 11:00:09
地板
1.是的,因为绑定的是sheet对象的cellclick事件,所以是在绑定的sheet生效。如果您想部分生效,可以cellclick事件中先判断一下点击单元格在没在您的生效范围中。如果在再走剩下的逻辑。
2.可以做到,参考附件demo
3.设置spread.options.scrollbarMaxAlign = true; 设置之后应该能消除大部分空白区域,如果还有一点点空白区域,那是因为空白区域不够一行高或一列宽造成的,那就只能去调整绑定的div的大小了。
回复 使用道具 举报
chaoren
初级会员   /  发表于:2018-9-28 11:48:31
5#
ClarkPan 发表于 2018-9-27 11:00
1.是的,因为绑定的是sheet对象的cellclick事件,所以是在绑定的sheet生效。如果您想部分生效,可以cellcli ...

回2,demo中是自己新建的combobox实例,里面可以添加属性,那对于已经存在的validator下拉菜单,如何获取到这个菜单的实例,并给它添加属性呢
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-9-28 15:54:03
6#
可以,我上传一个demo,关键代码处有注释,如下:

  1. $("#btn").click(function () {
  2.             /*
  3.             * 在这里获取到validator下拉菜单的数据集。
  4.             * */
  5.             var validator = sheet.getCell(6,2).validator();
  6.             var validList = validator.getValidList();
  7.             console.log(validList);
  8.             /*
  9.             * 重新设置list validator
  10.             * */
  11.             var dv1 = new spreadNS.DataValidation.createListValidator("1,2,3");
  12.             dv1.inputTitle("Please choose a category:");
  13.             dv1.inputMessage("1, 2, 3");
  14.             sheet.setDataValidator(6, 2, dv1);
  15.         });
复制代码


ValidatorCombobox.html

7.22 KB, 下载次数: 269

回复 使用道具 举报
chaoren
初级会员   /  发表于:2018-9-30 17:44:54
7#
KevinChen 发表于 2018-9-28 15:54
可以,我上传一个demo,关键代码处有注释,如下:

好的,非常感谢,我还有个问题,就是单元格有设置小数转百分数的,当单元格输入的是百分数的时候,则会出现很多位数的小数位,这是什么原因呢
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-9-30 17:51:43
8#
您这个问题可能原因比较多,您可以提供一个Demo,我们这边给您排查一下。

另外,猜测有可能是单元格格式设置的问题,您可以先参考一下这个Demo:

https://demo.grapecity.com.cn/Sp ... emos/basicFormatter
回复 使用道具 举报
chaoren
初级会员   /  发表于:2018-10-10 13:39:14
9#
KevinChen 发表于 2018-9-30 17:51
您这个问题可能原因比较多,您可以提供一个Demo,我们这边给您排查一下。

另外,猜测有可能是单元格格式 ...

测试.zip (12.25 KB, 下载次数: 439)
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-10-10 15:03:11
10#
当单元格类型为百分数时:

image.png47161253.png

那么您在这个单元格输入一个数字,比如10,显示结果就是1000.00%

如果输入值为10%,那么显示结果就是10%,真实值就变成了0.1

image.png740324401.png

这是Excel的规则,您输入的%相当于进行了百分比运算,给输入值除以100。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部