Derrick.Jiao 发表于 2020-10-10 11:51:08

SpreadJS自定义单元格实现树形下拉菜单

背景:众所周知,原生的SpreadJS可以实现下拉选择单元格。但是有小伙伴想实现树形下拉选择单元格,那么可以实现吗?答案是可以的。SpreadJS的良好的可拓展性给用户带来了这种可能。
本教程利用了SpreadJS的自定义单元格与jQuery的zTree插件实现树形下拉菜单。代码思路来源于以下教程集锦,由于原链接的版本为v8,目前最新版本为v13,版本之间存在差异以及部分接口的变更。因此对原来的代码做了部分修改,作为新版本的教程。
https://gcdn.grapecity.com.cn/showtopic-18675-1-1.html

效果截图:



修改新版本的资源后,插件无法弹出,通过以下代码修改其样式即可
editorContext.parentNode.parentNode.style.overflow = "visible";
            var t = cellRect.y + cellRect.height + 8;
            editorContext.parentNode.parentNode.style.top = t + "px";
            editorContext.parentNode.parentNode.style.border = "none";

下载附件可查看完整demo。

梅梅梅梅 发表于 2023-1-10 16:42:58

设计器添加了下拉树组件,但是有个方法总是报错是怎么回事呢?

Ellia.Duan 发表于 2023-1-10 17:57:33

梅梅梅梅 发表于 2023-1-10 16:42
设计器添加了下拉树组件,但是有个方法总是报错是怎么回事呢?

观察到您新开了一个帖子,后续将在此贴中进行回复。
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=160111

Prin 发表于 2023-7-6 15:10:15

您好,套用您这个demo实现了下拉框,但是<div gcUIElement="ComboTree">这一层在下拉的时候总会被赋予一个属性contenteditable="true",请问有没有什么方法可以阻止spread给这个元素赋予这个属性?{:5_106:}

Joestar.Xu 发表于 2023-7-6 15:35:30

Prin 发表于 2023-7-6 15:10
您好,套用您这个demo实现了下拉框,但是这一层在下拉的时候总会被赋予一个属性contenteditable="true",请 ...

您好,我这边没有发现您说的被赋予contenteditable="true"属性的情况,如下图:



你为什么不想让spread给这个元素赋予这个属性呢?


另外由于本帖时间较远,请您新开一个帖子将您的问题详细描述一下,我们这边帮您调查解决。

Prin 发表于 2023-7-7 08:28:02

在这个例子里我确实没有复现赋予contenteditable="true":( ,后面我再检查检查我自己的代码。
还有另一个问题,我在这个zTree初始化后想根据id获取这个树的对象,为什么获取不到,是因为初始化时机还是什么问题呢,请帮我看看,谢谢~:dizzy:

Prin 发表于 2023-7-7 10:57:08


这样能查到树,但是不太对吧?

Joestar.Xu 发表于 2023-7-7 12:14:52

Prin 发表于 2023-7-7 10:57
这样能查到树,但是不太对吧?

您好,请参考这个帖子中的内容,推测是ZTree版本的问题。

https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=160111
页: [1]
查看完整版本: SpreadJS自定义单元格实现树形下拉菜单