找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

超级版主

200

主题

9899

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
15535

讲师达人悬赏达人微信认证勋章SpreadJS 认证SpreadJS 高级认证元老葡萄

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-7-29 21:44  /   查看:831  /  回复:0
本帖最后由 Clark.Pan 于 2023-7-29 21:47 编辑

需求:

数据绑定时,如果日期是字符串格式,结果无法设置format。

思路:

通过数据绑定中的value方法,来设置相互转换。value本身有一个作用,就是在数据绑定时候,充当一个转换器,在数据源与真实显示的值之间做转换。
通过value方法,我们可以自由定义如何进行转换。

解决方案:
下面示例以表格绑定为例,在tablecolumn的value方法中调用我们转换的逻辑,
tableColumn1.value(function(item, value){
        if (arguments.length > 1) {
                var oaTest = new RegExp('^/OADate\\(([-+]?(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)\\)/\\s*$');
                if (oaTest.test(value)) {
                        x = value.match(oaTest);
                        var formatter = new GC.Spread.Formatter.GeneralFormatter("yyyy-mm-dd")
                        item["date"] = formatter.format(format.parse(x[1]));
                } else {
                        item["date"] = value;
                }
        } else {
                return new Date(item.date);
        }
})
这里需要一个判断arguments.length > 1,通过判断代表双向绑定数据的来和去。
当arguments.length > 1,里面的逻辑会在页面的数据同步给数据源时走的逻辑,反之则是数据同步给页面时走的逻辑。

完整demo见附件


dateTransform.html

2.39 KB, 下载次数: 13

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部