张天笑 发表于 2020-6-9 17:28:02

WijmoGrid自定义编辑控件, paste后, 在formatItem回调中拿不到刚刚粘贴的数据

我整理了一份演示demo
极简customerEditor, 不知道问题是不是出在这里
调wijmo 只能逆向调试, 不报错是第一步

注: 附件chm改为.html

KevinChen 发表于 2020-6-9 17:35:51

您好,这个问题需要进一步调研,预计明天上午给您回复。

KevinChen 发表于 2020-6-10 06:04:41

用你的Demo没能重现这个问题,formatItem中第二个if的条件如果设置成跟第一个if一样时,那么c2 , c3列之间的数据就可以正常复制粘贴了,

复制粘贴操作本质是操作系统剪贴板,系统剪贴板肯定不能拷贝一个json对象,只能拷贝它的stringify字符串,所以加formatItem的目的就是parse这个json对象,

还可以参考一下用户实际的问题案例:

https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=75171

张天笑 发表于 2020-6-10 10:34:23

KevinChen 发表于 2020-6-10 06:04
用你的Demo没能重现这个问题,formatItem中第二个if的条件如果设置成跟第一个if一样时,那么c2 , c3列之间 ...

操作步骤:
①. 点击坐标1,1,({"value":"Germany"}), ctrl c复制
②. 双击坐标0,2 激活input
③. ctrl v复制json字符串, enter回车 提交编辑
此时没能成功修改0.2

张天笑 发表于 2020-6-10 11:07:57

KevinChen 发表于 2020-6-10 06:04
用你的Demo没能重现这个问题,formatItem中第二个if的条件如果设置成跟第一个if一样时,那么c2 , c3列之间 ...

可能是wj版本问题, 我再尝试下

张天笑 发表于 2020-6-10 11:49:56

很多时候对比法就能发现问题, 经过一番折腾.
发现给单元格设计对象{}类型的值, 可以正常ctrl c ctrl v,设置为array类型, 则不行,

KevinChen 发表于 2020-6-10 18:03:55

你好,粘贴板中的数据是字符串,而目标单元格中是array,这触发了FlexGrid的数据校验,

如果要用粘贴,可以考虑直接保存JSON字符串,然后别忘了formatItem访问时,数组要加

如附件

张天笑 发表于 2020-6-10 19:44:35

KevinChen 发表于 2020-6-10 18:03
你好,粘贴板中的数据是字符串,而目标单元格中是array,这触发了FlexGrid的数据校验,

如果要用粘贴, ...

你好, 感谢回复.
1. 刚对比过后, 发现您将原始值改为了JSON.stringify, 理由是触发了FlexGrid的数据校验,
这是一种解决方式, 但不太舒服.可有方法在parst的tsv被wijmo解析之后, 在单元格被赋值前对数据进行处理,比如JSON.parse().

2. ctrl c 复制(0,2), 粘贴到(1,2) , 此时ctrl z 撤销无效, 需要切换到另一行才会触发撤销的行为

demo沿用您上次的附件

张天笑 发表于 2020-6-10 19:48:46

本帖最后由 张天笑 于 2020-6-10 19:53 编辑

张天笑 发表于 2020-6-10 19:44
你好, 感谢回复.
1. 刚对比过后, 发现您将原始值改为了JSON.stringify, 理由是触发了FlexGrid的数据校验 ...
=================

张天笑 发表于 2020-6-10 20:06:11

张天笑 发表于 2020-6-10 19:44
你好, 感谢回复.
1. 刚对比过后, 发现您将原始值改为了JSON.stringify, 理由是触发了FlexGrid的数据校验 ...

不能撤销的原因找到了,
我切换到V 5.20192.624 , 就可以在同一单元格撤销, 回退, 立即可以看到效果
而用最新版的V 5.20201.680, 在同一单元格是不能回退 前进的.
版本号通过wijmo.getVersion()获取
页: [1] 2
查看完整版本: WijmoGrid自定义编辑控件, paste后, 在formatItem回调中拿不到刚刚粘贴的数据