请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

rcsy001

高级会员

118

主题

330

帖子

1198

积分

高级会员

积分
1198

活字格认证微信认证勋章

QQ
rcsy001
高级会员   /  发表于:2016-12-13 20:16  /   查看:3439  /  回复:7
Spread.Views 日期字段如何格式化
我用官方示例,
var dataView = new GC.Spread.Views.DataView(document.getElementById("grid1"), queryData, new GC.Spread.Views.Plugins.GridLayout());
加载数据queryData(AJAX从后台取得的List<T>数据),日期字段显示如下图:
blob227559508.png
请问,如何格式为 yyyy-MM-dd的格式。

7 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-14 15:01:56
沙发
本帖最后由 dexteryao 于 2016-12-14 15:10 编辑

1.step1, 你需要把后台的时间数据转化成标准的javascript 时间。
var sourceData = data;
for(var pro in sourceData){
  if(pro === '创建时间'){
    var dateValue = sourceData[pro]
    sourceData[pro] = new Date(parseInt(dateValue.slice(6, dateValue.length - 2)));
  }
}

2.step2, 因为日期Spread.Views默认的格式和你的需要的不一样,所以你需要给column指定format.(因为你需要指定特定字段的format, 我们推荐定义所有columns)

var columns = [{
   .....
},{
  id:'createDate',
  caption:'创建时间',
  dataField:'创建时间',
  format:'yyyy-MM-dd'
},{
  ....
}];

3.step3, 调用下面code完成初始化
  var dataView = newGC.Spread.Views.DataView(document.getElementById('grid1'), data, columns, newGC.Spread.Views.Plugins.GridLayout());

评分

参与人数 1满意度 +5 收起 理由
rcsy001 + 5 很给力!

查看全部评分

回复 使用道具 举报
rcsy001
高级会员   /  发表于:2016-12-14 15:51:45
板凳
你们这个可否改进一下,Spread.Sheets没这个问题
这个不太方便啊
回复 使用道具 举报
Tim2010
版主   /  发表于:2016-12-14 16:22:29
地板
rcsy001 发表于 2016-12-14 15:51
你们这个可否改进一下,Spread.Sheets没这个问题
这个不太方便啊

你好,
   请问你的数据类型是从spreadsheets.toJSON() 生成的么,如果是的话,spreadsheets是可以无缝读取的。
   spreadjs.views 和spreadjs 的数据格式不同,所以需要额外做一些事情。
回复 使用道具 举报
rcsy001
高级会员   /  发表于:2016-12-14 19:37:27
5#
数据是调用后台数据查询生成的
List<T> 的数据转成Json格式返回到前端
return Json(list, JsonRequestBehavior.AllowGet);

Spread.Sheets没问题,Spread.Views就不行。
官方能否给个示例
回复 使用道具 举报
Tim2010
版主   /  发表于:2016-12-15 09:05:04
6#
你好,
    Spread.Sheets在开始设计时参考了我们.net spread control 在序列化日期时的方式,即.net JSON,所以你的服务器端API是.net时,它可以直接处理返回的JSON日期。

    Spread.Views从一开始设计时就是纯Javascript方式,只接受javascript中合理的日期形式,但为了保持和Spread.Sheets的兼容性,当value是number时, 它的值不是指JS中常说的从1970/01/01开始的milliseconds, 而是.net中常说的OADate.  

     因为服务器端语言的可选性很多,我们不能假设返回的数据格式一定就是类似于.net中/Date(‘XXXXX’)/形式的,比如还可能是ISO 8601 DateTime,所以需要你先做额外的处理再传到Spread.Views, 希望能谅解。
具体方案就是我之前给出的,可以参考demo: http://demo.gcpowertools.com.cn/ ... /ExcelLikeFormatter
http://demo.gcpowertools.com.cn/ ... mos/CustomFormatter
回复 使用道具 举报
rcsy001
高级会员   /  发表于:2016-12-19 10:06:45
7#
虽然麻烦一点,但问题能解决,谢谢解答,结贴吧
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-19 11:55:28
8#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部