找回密码
 立即注册

QQ登录

只需一步,快速开始

溪夔

注册会员

11

主题

34

帖子

123

积分

注册会员

积分
123

微信认证勋章

溪夔
注册会员   /  发表于:2020-6-17 12:17  /   查看:7054  /  回复:22
本帖最后由 溪夔 于 2020-6-24 18:25 编辑

image.png126650084.png
我是用Combox自定义了单元格的功能,但Combox的下拉三角按钮能否在选中单元格的时候才显示,不选中不显示呢?

本来是想使用CellClick事件的时候设置sheet.setCellType(row,col,CellType)和LeaveCell时候sheet.setCellType(row,col,
null
)来实现,但是发现这样设置之后,第二次再进入单元格无法显示自定义的内容了。


image.png306625365.png

第一次进入

image.png623009643.png

第二次进入

22 个回复

倒序浏览
Fiooona
论坛元老   /  发表于:2020-6-17 13:48:05
沙发
SpreadJS 自带的这种组合框单元格 无法满足您的要求,您的自定义的单元格没有回显选项,看截图无法判断您的问题,可以提供下能复现问题的Demo
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
溪夔
注册会员   /  发表于:2020-6-17 16:20:13
板凳
Fiooona 发表于 2020-6-17 13:48
SpreadJS 自带的这种组合框单元格 无法满足您的要求,您的自定义的单元格没有回显选项,看截图无法判断您的 ...

麻烦看一下,谢谢

spreadJS 自定义多选下拉 (1).zip

2.06 MB, 下载次数: 60

回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-6-17 18:24:45
地板
收到,预计明日给您答复
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-6-18 09:44:07
5#
那不选中的时候,直接点击原来三角区域是否弹出下拉框?
多选单元格的时候是否显示下拉框?
如果要先选中显示三角,然后点击三角再弹出,那从Text或者继承,然后重写Paint方法
paint中判断是否选中,如果选中则绘制三角,同时重写mouseup,判断选中时才调用startEdit进入编辑状态,弹出下拉框。
其他情况类似,根据您的需求判断是否绘制和相应。
回复 使用道具 举报
溪夔
注册会员   /  发表于:2020-6-18 13:01:47
6#
dexteryao 发表于 2020-6-18 09:44
那不选中的时候,直接点击原来三角区域是否弹出下拉框?
多选单元格的时候是否显示下拉框?
如果要先选中 ...

感谢回答,但是我还有一些问题,再paint重写中,我使用enterCell控制选中时显示三角,但是会将所有三角都绘制出来,
1请问应该如何只在选中单元格绘制,
2且退出单元格的时候如何销毁掉三角,
3在绘制图案的时候,原先单元格的值被覆盖了,应该如何同时显示呢?

image.png733073425.png

image.png875796813.png
回复 使用道具 举报
溪夔
注册会员   /  发表于:2020-6-18 14:35:37
7#
dexteryao 发表于 2020-6-18 09:44
那不选中的时候,直接点击原来三角区域是否弹出下拉框?
多选单元格的时候是否显示下拉框?
如果要先选中 ...

我研究了一下,单元格值我知道是paint重写方法里的value传过来的,但是值只能作为画布的一部分吗,如果超出单元格宽的部分能像普通单元格的值一样换行呢?
https://demo.grapecity.com.cn/SpreadJS/cdn/extendedExample/#/demos/mousePointer
这个例子里的图案不会因为高度宽度改变而重绘是为什么呢,我设置之后,高度宽度一遍或者重复点击单元格就会一直绘制

image.png771805724.png
如果可以,麻烦指导一下


spreadJS 自定义多选下拉 (1).zip

2.06 MB, 下载次数: 61

回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-6-18 17:03:23
8#
不要在paint里用事件啊。。。。
可以调用父类的方法去绘制,不用关心怎么绘制,你只需要额外画自己的三角就好了。
选中后重绘
  1. spread.bind(GC.Spread.Sheets.Events.EnterCell, function (sender, args){
  2.     var sheet = args.sheet, row = args.row, col = args.col;
  3.     sheet.repaint();
  4.     });
复制代码


  1. MyCellType9.prototype.paint = function (ctx, value, x, y, w, h, style, context) {
  2.         // sheet.bind(GC.Spread.Sheets.Events.EnterCell, function (sender, args) {
  3.         if (!ctx) {
  4.                 return;
  5.     }
  6.    
  7.     var sheet = context.sheet, row = context.row, col = context.col;
复制代码


回复 使用道具 举报
溪夔
注册会员   /  发表于:2020-6-18 18:08:30
9#
dexteryao 发表于 2020-6-18 17:03
不要在paint里用事件啊。。。。
可以调用父类的方法去绘制,不用关心怎么绘制,你只需要额外画自己的三角 ...

不好意思,麻烦你了,但是我还是有一个问题想不明白,选中绘制了,离开这个单元格的时候如何去掉三角呢
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-6-18 18:53:38
10#
问题已收到,明日给您答复
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部