为了账号安全,请及时绑定邮箱和手机立即绑定

DateTime在ExtJs中无法序列化的解决办法

标签:
JavaScript

这几天在学习ExtJs + Wcf的过程中,发现一个问题,如果Class中有成员的类型为DateTime,即使我们正常标识了[DataMember],序列化成JSON时,会生成一种特有的格式:


..."AddTime":"\/Date(1213718400000+0800)\/"}...


 

这种格式ExtJs并不识别,导致最终的组件,比如Grid上无法正常显示,解决办法有二个:


 

1.将Class的成员,手动改成String类型,不过个人不推荐这种方式,毕竟将数据类型都改了,相应的服务端很多地方都可能会做相关修改


 

2.用JS在前台调用时,用代码处理返回的JSON字符串格式,使之符合ExtJs的规范(这个方法是从博客园"小庄"那里学来的,呵)


 

Ext.onReady(function() {
        //这个函数演示了怎样把服务器端的DateTime类型转为Javascript的日期       
         function setAddTime(value, p, record) {
                     var jsondate = record.data.F_AddTime;            
                     return eval("new " + jsondate.substr(1, jsondate.length - 2)).toLocaleDateString();
  }


设置Grid的Columns时,类似如下处理:

var grid = new Ext.grid.GridPanel({
            store: store,
            columns: [
                ...
                
                { header: "添加时间", width: 140, sortable: true,renderer: setAddTime,dataIndex: 'F_AddTime' }
            ],


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消