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' } ],复制
相关推荐
- ExtJs七(ExtJs Mvc创建ViewPort) 前言在4.1的时候,要先创建一个扩展于Ext.app.Application的类,然后用create创建它的实例来开始应用程序的。而在4.1.1,则可直接调用application方法开始执行应用程序,简化了。调用application方法,其参数是一个配置对象,主要配置项有以下三个:name:用来…
- 3DMAX提示和技巧 本主题标识使用 Civil View 的一些重要提示和技巧。常规使用屏幕分辨率至少为 1280x1024 的 Civil View。低于此分辨率时,一些面板将占用过多屏幕空间。 将视口设置为线框显示以达到最佳性能。 要尽可能简化用户界面,请在单个视口中工作并关闭 3ds Max 命令面…