找回密码
 立即注册

QQ登录

只需一步,快速开始

ztoit

中级会员

36

主题

87

帖子

944

积分

中级会员

积分
944

微信认证勋章

QQ
ztoit
中级会员   /  发表于:2017-7-4 17:33  /   查看:5878  /  回复:9
blob309344481.png 后台获取到的时间戳,使用了formatter转换时间格式,
blob276292113.png
效果如上,显示NaN,如果将         
   value: function (row) {               return new Date(row['scanDate']);
          }
的注释去掉,到时可以正常显示,但是,该列的排序就不对了


9 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-4 18:22:12
沙发
您好,能否具体的描述一下排序不对的情况,或者提供一下您的导出的json文件,让我们来重现问题。
回复 使用道具 举报
ztoit
中级会员   /  发表于:2017-7-5 15:19:31
板凳
你随便用时间戳的数据,用bindColumns,setDataSource的方法制作一个demo,我看看对比一下,看我哪里写的不对。我这边的都写在整个项目里面了,不好剥离出来
回复 使用道具 举报
ztoit
中级会员   /  发表于:2017-7-5 15:21:12
地板
blob114837035.png 点击降序后的效果
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-5 17:25:58
5#
您好,按照您的要求做了一个demo,请进行参考

dataformatter.zip

1.08 KB, 下载次数: 183

回复 使用道具 举报
ztoit
中级会员   /  发表于:2017-7-6 14:47:32
6#
  1. <!DOCTYPE html>
  2. <html>

  3.         <head>
  4.                 <title></title>
  5.                 <meta charset="utf-8" />
  6.                 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  7.                 <meta name="spreadjs culture" content="zh-cn" />

  8.                 <link href="js/style/gc.spread.sheets.10.1.0.css" rel="stylesheet" type="text/css" />

  9.                 <script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>

  10.                 <script type="text/javascript" src="js/gc.spread.sheets.all.10.1.0.js"></script>
  11.                 <!--<script type="text/javascript" src="js/interop/gc.spread.excelio.10.1.0.min.js"></script>-->
  12.                 <script type="text/javascript" src="js/resources/zh/gc.spread.sheets.resources.zh.10.1.0.js"></script>
  13.                 <script type="text/javascript" src="js/license.js"></script>
  14.         </head>

  15.         <body>
  16.                 <div id='ss' style='width:100%; height:400px;'></div>
  17.         </body>


  18. </html>
  19. <script type="text/javascript">
  20.         $(document).ready(function() {
  21.                 var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
  22.                 var sheet = spread.getActiveSheet();
  23.                 var datasource = [
  24.                         {name: 'Alice',age: 27,birthday: 1497590553000,position: 'PM'},
  25.                         {name: 'Alice1',age: 27,birthday: 1497604878000,position: 'PM'},
  26.                         {name: 'Alice2',age: 27,birthday: 1497605106000,position: 'PM'},
  27.                         {name: 'Alice3',age: 27,birthday: 1497605107000,position: 'PM'},
  28.                         {name: 'Alice4',age: 27,birthday: 1497605068000,position: 'PM'},
  29.                         {name: 'Alice5',age: 27,birthday: 1497605102000,position: 'PM'},
  30.                         {name: 'Alice6',age: 27,birthday: 1497605049000,position: 'PM'},
  31.                         {name: 'Alice7',age: 27,birthday: 1497605099000,position: 'PM'},
  32.                         {name: 'Alice8',age: 27,birthday: 1497605054000,position: 'PM'},
  33.                         {name: 'Alice9',age: 27,birthday: 1497605080000,position: 'PM'},
  34.                         {name: 'Alice10',age: 27,birthday: 1497605055000,position: 'PM'},
  35.                         {name: 'Alice11',age: 27,birthday: 1497605097000,position: 'PM'}
  36.                 ];
  37.                 // bindColumn one by one
  38.                 var colInfo = [{
  39.                                 name: 'name',
  40.                                 displayName: '姓名'
  41.                         },
  42.                         {
  43.                                 name: 'age',
  44.                                 displayName: 'Age'
  45.                         },
  46.                         {
  47.                                 name: 'birthday',
  48.                                 displayName: '生日',
  49.                                 formatter: 'yyyy-MM-dd hh:mm:ss',
  50.                                 value: function(row) {
  51.                                         return new Date(row.birthday);
  52.                                 }
  53.                         },
  54.                         {
  55.                                 name: 'position',
  56.                                 displayName: 'Position',
  57.                                 isHideFilter:false
  58.                         }
  59.                 ];

  60.                 sheet.autoGenerateColumns = true;
  61.                 sheet.setDataSource(datasource);
  62.                 sheet.bindColumns(colInfo);
  63.                 initSpread(spread);
  64.                 resetDefaultStyle(sheet);
  65.                 setRowFilter(sheet);
  66.                 //表格设置排序,筛选
  67.         function setRowFilter(sheet) {
  68.             var rowCount, colCount;
  69.             rowCount = sheet.getRowCount();
  70.             colCount = sheet.getColumnCount();
  71.             sheet.rowFilter(new GC.Spread.Sheets.Filter.HideRowFilter(new GC.Spread.Sheets.Range(-1, 0, rowCount, colCount)));
  72.             var filter = sheet.rowFilter();
  73.             colInfo.forEach(function (item, index) {
  74.                 if (!item.ishideFilter && item.isHideFilter == false) {
  75.                     filter.filterButtonVisible(index, false);
  76.                 };
  77.             })
  78.         }
  79.                 //初始化表格
  80.                 function initSpread(spread) {
  81.             // give sheet name more space
  82.             spread.options.setTabStripRatio = 0.8;
  83.             spread.options.scrollbarMaxAlign = true;
  84.             spread.options.scrollbarShowMax = true;
  85.             spread.options.grayAreaBackColor = '#e9eef2';
  86.             spread.options.showVerticalScrollbar = true;
  87.             spread.options.newTabVisible = false;
  88.             spread.options.tabStripVisible = false;
  89.             GC.Spread.Common.CultureManager.culture("zh-cn");
  90.         }
  91.                  //重新定义表格默认样式
  92.         function resetDefaultStyle(sheet) {
  93.             // set default style for all cells
  94.             sheet.defaults.rowHeight = 26;
  95.             sheet.defaults.colHeaderRowHeight = 30;
  96.             sheet.defaults.colWidth = 200;
  97.             sheet.options.protectionOptions = {
  98.                 allowFilter: true,
  99.                 allowSort: true,
  100.                 allowResizeRows: true,
  101.                 allowResizeColumns: true,
  102.                 allowEditObjects: true
  103.             };
  104.             sheet.options.isProtected = true;
  105.             var defaultStyle = sheet.getDefaultStyle();
  106.             //                                defaultStyle.backColor  = "#eaf1f9";
  107.             defaultStyle.foreColor = "#666666";
  108.             defaultStyle.font = '9pt "Helvetica Neue", Helvetica, Microsoft Yahei, Hiragino Sans GB, WenQuanYi Micro Hei, sans-serif';
  109.             defaultStyle.vAlign = GC.Spread.Sheets.VerticalAlign.center;
  110.             defaultStyle.hAlign = GC.Spread.Sheets.HorizontalAlign.center;
  111.             sheet.setDefaultStyle(defaultStyle);
  112.             sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.colHeader);
  113.             sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.colHeader);
  114.         }
  115.                

  116.         });
  117. </script>
复制代码

这样的时间排序是不对的
回复 使用道具 举报
ztoit
中级会员   /  发表于:2017-7-6 14:47:40
7#
  1. <!DOCTYPE html>
  2. <html>

  3.         <head>
  4.                 <title></title>
  5.                 <meta charset="utf-8" />
  6.                 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  7.                 <meta name="spreadjs culture" content="zh-cn" />

  8.                 <link href="js/style/gc.spread.sheets.10.1.0.css" rel="stylesheet" type="text/css" />

  9.                 <script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>

  10.                 <script type="text/javascript" src="js/gc.spread.sheets.all.10.1.0.js"></script>
  11.                 <!--<script type="text/javascript" src="js/interop/gc.spread.excelio.10.1.0.min.js"></script>-->
  12.                 <script type="text/javascript" src="js/resources/zh/gc.spread.sheets.resources.zh.10.1.0.js"></script>
  13.                 <script type="text/javascript" src="js/license.js"></script>
  14.         </head>

  15.         <body>
  16.                 <div id='ss' style='width:100%; height:400px;'></div>
  17.         </body>


  18. </html>
  19. <script type="text/javascript">
  20.         $(document).ready(function() {
  21.                 var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
  22.                 var sheet = spread.getActiveSheet();
  23.                 var datasource = [
  24.                         {name: 'Alice',age: 27,birthday: 1497590553000,position: 'PM'},
  25.                         {name: 'Alice1',age: 27,birthday: 1497604878000,position: 'PM'},
  26.                         {name: 'Alice2',age: 27,birthday: 1497605106000,position: 'PM'},
  27.                         {name: 'Alice3',age: 27,birthday: 1497605107000,position: 'PM'},
  28.                         {name: 'Alice4',age: 27,birthday: 1497605068000,position: 'PM'},
  29.                         {name: 'Alice5',age: 27,birthday: 1497605102000,position: 'PM'},
  30.                         {name: 'Alice6',age: 27,birthday: 1497605049000,position: 'PM'},
  31.                         {name: 'Alice7',age: 27,birthday: 1497605099000,position: 'PM'},
  32.                         {name: 'Alice8',age: 27,birthday: 1497605054000,position: 'PM'},
  33.                         {name: 'Alice9',age: 27,birthday: 1497605080000,position: 'PM'},
  34.                         {name: 'Alice10',age: 27,birthday: 1497605055000,position: 'PM'},
  35.                         {name: 'Alice11',age: 27,birthday: 1497605097000,position: 'PM'}
  36.                 ];
  37.                 // bindColumn one by one
  38.                 var colInfo = [{
  39.                                 name: 'name',
  40.                                 displayName: '姓名'
  41.                         },
  42.                         {
  43.                                 name: 'age',
  44.                                 displayName: 'Age'
  45.                         },
  46.                         {
  47.                                 name: 'birthday',
  48.                                 displayName: '生日',
  49.                                 formatter: 'yyyy-MM-dd hh:mm:ss',
  50.                                 value: function(row) {
  51.                                         return new Date(row.birthday);
  52.                                 }
  53.                         },
  54.                         {
  55.                                 name: 'position',
  56.                                 displayName: 'Position',
  57.                                 isHideFilter:false
  58.                         }
  59.                 ];

  60.                 sheet.autoGenerateColumns = true;
  61.                 sheet.setDataSource(datasource);
  62.                 sheet.bindColumns(colInfo);
  63.                 initSpread(spread);
  64.                 resetDefaultStyle(sheet);
  65.                 setRowFilter(sheet);
  66.                 //表格设置排序,筛选
  67.         function setRowFilter(sheet) {
  68.             var rowCount, colCount;
  69.             rowCount = sheet.getRowCount();
  70.             colCount = sheet.getColumnCount();
  71.             sheet.rowFilter(new GC.Spread.Sheets.Filter.HideRowFilter(new GC.Spread.Sheets.Range(-1, 0, rowCount, colCount)));
  72.             var filter = sheet.rowFilter();
  73.             colInfo.forEach(function (item, index) {
  74.                 if (!item.ishideFilter && item.isHideFilter == false) {
  75.                     filter.filterButtonVisible(index, false);
  76.                 };
  77.             })
  78.         }
  79.                 //初始化表格
  80.                 function initSpread(spread) {
  81.             // give sheet name more space
  82.             spread.options.setTabStripRatio = 0.8;
  83.             spread.options.scrollbarMaxAlign = true;
  84.             spread.options.scrollbarShowMax = true;
  85.             spread.options.grayAreaBackColor = '#e9eef2';
  86.             spread.options.showVerticalScrollbar = true;
  87.             spread.options.newTabVisible = false;
  88.             spread.options.tabStripVisible = false;
  89.             GC.Spread.Common.CultureManager.culture("zh-cn");
  90.         }
  91.                  //重新定义表格默认样式
  92.         function resetDefaultStyle(sheet) {
  93.             // set default style for all cells
  94.             sheet.defaults.rowHeight = 26;
  95.             sheet.defaults.colHeaderRowHeight = 30;
  96.             sheet.defaults.colWidth = 200;
  97.             sheet.options.protectionOptions = {
  98.                 allowFilter: true,
  99.                 allowSort: true,
  100.                 allowResizeRows: true,
  101.                 allowResizeColumns: true,
  102.                 allowEditObjects: true
  103.             };
  104.             sheet.options.isProtected = true;
  105.             var defaultStyle = sheet.getDefaultStyle();
  106.             //                                defaultStyle.backColor  = "#eaf1f9";
  107.             defaultStyle.foreColor = "#666666";
  108.             defaultStyle.font = '9pt "Helvetica Neue", Helvetica, Microsoft Yahei, Hiragino Sans GB, WenQuanYi Micro Hei, sans-serif';
  109.             defaultStyle.vAlign = GC.Spread.Sheets.VerticalAlign.center;
  110.             defaultStyle.hAlign = GC.Spread.Sheets.HorizontalAlign.center;
  111.             sheet.setDefaultStyle(defaultStyle);
  112.             sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.colHeader);
  113.             sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.colHeader);
  114.         }
  115.                

  116.         });
  117. </script>
复制代码

这样的时间排序是不对的
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-6 16:47:22
8#
ztoit 发表于 2017-7-6 14:47
这样的时间排序是不对的

您好,您的问题咨询了一下我们的研发,原因是这样的,筛选的实现原因其实是通过值得交换来实现的,所以您在实现convert时需要同时实现setValue,不然实现中无法知道该如何set,导致筛选后值不变。根据您提供的代码,我们进行了修改,您可以进行参考:

  1. <!DOCTYPE html>
  2. <html>

  3.         <head>
  4.                 <title></title>
  5.                 <meta charset="utf-8" />
  6.                 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  7.                 <meta name="spreadjs culture" content="zh-cn" />

  8.                 <link href="css/gc.spread.sheets.10.1.0.css" rel="stylesheet" type="text/css" />

  9.                 <script src="http://demo.gcpowertools.com.cn/SpreadJS/TutorialSample/external/external/jquery-1.8.2.min.js" type="text/javascript"></script>

  10.                 <script type="text/javascript" src="js/gc.spread.sheets.all.10.1.0.min.js"></script>
  11.                 <!--<script type="text/javascript" src="js/interop/gc.spread.excelio.10.1.0.min.js"></script>-->
  12.                 <!--<script type="text/javascript" src="js/resources/zh/gc.spread.sheets.resources.zh.10.1.0.js"></script>-->
  13.                 <script type="text/javascript" src="js/license.js"></script>
  14.         </head>

  15.         <body>
  16.                 <div id='ss' style='width:100%; height:400px;'></div>
  17.         </body>


  18. </html>
  19. <script type="text/javascript">
  20.         $(document).ready(function() {
  21.                 var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
  22.                 var sheet = spread.getActiveSheet();
  23.                 var datasource = [
  24.                         {name: 'Alice',age: 27,birthday: 1497590553000,position: 'PM'},
  25.                         {name: 'Alice1',age: 27,birthday: 1497604878000,position: 'PM'},
  26.                         {name: 'Alice2',age: 27,birthday: 1497605106000,position: 'PM'},
  27.                         {name: 'Alice3',age: 27,birthday: 1497605107000,position: 'PM'},
  28.                         {name: 'Alice4',age: 27,birthday: 1497605068000,position: 'PM'},
  29.                         {name: 'Alice5',age: 27,birthday: 1497605102000,position: 'PM'},
  30.                         {name: 'Alice6',age: 27,birthday: 1497605049000,position: 'PM'},
  31.                         {name: 'Alice7',age: 27,birthday: 1497605099000,position: 'PM'},
  32.                         {name: 'Alice8',age: 27,birthday: 1497605054000,position: 'PM'},
  33.                         {name: 'Alice9',age: 27,birthday: 1497605080000,position: 'PM'},
  34.                         {name: 'Alice10',age: 27,birthday: 1497605055000,position: 'PM'},
  35.                         {name: 'Alice11',age: 27,birthday: 1497605097000,position: 'PM'}
  36.                 ];
  37.                 // bindColumn one by one
  38.                                 function fromOADate(date) {
  39.                                         var oaDateReg = new RegExp('^/OADate\\(([-+]?(\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)\\)/\\s*);
  40.                                         if (typeof date === "string" && oaDateReg.test(date)) {
  41.                                                 var oadate = parseFloat(date.match(oaDateReg)[1]);
  42.                                                 var ms = (oadate * 86400000 * 1440 - 25569 * 86400000 * 1440 + new Date((oadate - 25569) * 86400000).getTimezoneOffset() * 86400000 ) / 1440;
  43.                                                 return new Date(ms);
  44.                                         }else{
  45.                                                 return date;
  46.                                         }
  47.                                 }

  48.                 var colInfo = [{
  49.                                 name: 'name',
  50.                                 displayName: '姓名'
  51.                         },
  52.                         {
  53.                                 name: 'age',
  54.                                 displayName: 'Age'
  55.                         },
  56.                         {
  57.                                 name: 'birthday',
  58.                                 displayName: '生日',
  59.                                 formatter: 'yyyy-MM-dd hh:mm:ss',
  60.                                 value: function(row,value) {
  61.                                    if (arguments.length === 1) {
  62.                                                                                 //getValue
  63.                                                                                 return new Date(row.birthday);
  64.                                                                         } else {
  65.                                                                                 //setValue
  66.                                                                                 row.birthday = fromOADate(value).valueOf();
  67.                                                                         }

  68.                                                                 }

  69.                         },
  70.                         {
  71.                                 name: 'position',
  72.                                 displayName: 'Position',
  73.                                 isHideFilter:false
  74.                         }
  75.                 ];

  76.                 sheet.autoGenerateColumns = true;
  77.                 sheet.setDataSource(datasource);
  78.                 sheet.bindColumns(colInfo);
  79.                 initSpread(spread);
  80.                 resetDefaultStyle(sheet);
  81.                 setRowFilter(sheet);
  82.                 //表格设置排序,筛选
  83.                                 function setRowFilter(sheet) {
  84.                                         var rowCount, colCount;
  85.                                         rowCount = sheet.getRowCount();
  86.                                         colCount = sheet.getColumnCount();
  87.                                         sheet.rowFilter(new GC.Spread.Sheets.Filter.HideRowFilter(new GC.Spread.Sheets.Range(0, 0, rowCount, colCount)));
  88.                                         var filter = sheet.rowFilter();
  89.                                         /*colInfo.forEach(function (item, index) {
  90.                                                 if (!item.ishideFilter && item.isHideFilter == false) {
  91.                                                         filter.filterButtonVisible(index, false);
  92.                                                 };
  93.                                         })*/7
  94.                                 }
  95.                                 //初始化表格
  96.                                
  97.                                 function initSpread(spread) {
  98.                                         // give sheet name more space
  99.                                         spread.options.setTabStripRatio = 0.8;
  100.                                         spread.options.scrollbarMaxAlign = true;
  101.                                         spread.options.scrollbarShowMax = true;
  102.                                         spread.options.grayAreaBackColor = '#e9eef2';
  103.                                         spread.options.showVerticalScrollbar = true;
  104.                                         spread.options.newTabVisible = false;
  105.                                         spread.options.tabStripVisible = false;
  106.                                         GC.Spread.Common.CultureManager.culture("zh-cn");
  107.                                 }
  108.                                 //重新定义表格默认样式
  109.                                 function resetDefaultStyle(sheet) {
  110.                                         // set default style for all cells
  111.                                         sheet.defaults.rowHeight = 26;
  112.                                         sheet.defaults.colHeaderRowHeight = 30;
  113.                                         sheet.defaults.colWidth = 200;
  114.                                         sheet.options.protectionOptions = {
  115.                                                 allowFilter: true,
  116.                                                 allowSort: true,
  117.                                                 allowResizeRows: true,
  118.                                                 allowResizeColumns: true,
  119.                                                 allowEditObjects: true
  120.                                         };
  121.                                 //        sheet.options.isProtected = true;
  122.                                         var defaultStyle = sheet.getDefaultStyle();
  123.                                         //                                defaultStyle.backColor  = "#eaf1f9";
  124.                                         defaultStyle.foreColor = "#666666";
  125.                                         defaultStyle.font = '9pt "Helvetica Neue", Helvetica, Microsoft Yahei, Hiragino Sans GB, WenQuanYi Micro Hei, sans-serif';
  126.                                         defaultStyle.vAlign = GC.Spread.Sheets.VerticalAlign.center;
  127.                                         defaultStyle.hAlign = GC.Spread.Sheets.HorizontalAlign.center;
  128.                                         sheet.setDefaultStyle(defaultStyle);
  129.                                         sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.colHeader);
  130.                                         sheet.setDefaultStyle(defaultStyle, GC.Spread.Sheets.SheetArea.colHeader);
  131.                                 }
  132.                

  133.         });
  134. </script>
复制代码
回复 使用道具 举报
ztoit
中级会员   /  发表于:2017-7-6 17:13:22
9#
tia blob489833373.png 调试报错
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-6 17:21:00
10#
不好意思,发现论坛帖代码的时候把代码中的部分符号搞不见了,我将代码附件上传您再看看。
以下是测试截图:
image.png599443969.png
image.png785371093.png

dataformatter_1.zip

2.1 KB, 下载次数: 187

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部