DateTime在ExtJs中无法正确序列化的问题

小编:管理员 443阅读 2022.09.07

这几天在学习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' }
             ],
复制
关联标签: