0

我从 WCF 服务获取 JSON 数据,格式如下。然后我将该数据绑定到handsOnTables。

JSON

{"d":[
  { "__type":"InitData:#company.ReductionData",
    "Owner":"test9",
    ...
    ... 
    "StartDate":"\/Date(1366848000000+0000)\/",
    "Risks":"test9",
 }] }

脚本

$(function () {

         var $value = $("#Body_hiddenClientId");
        // alert($value.val());
         var $container = $("#dataTable");

         $container.handsontable({
             contextMenu: true,
             startRows: 1,
             minRows: 1,                 
             colHeaders: true,
             stretchH: 'all',     
             columns: [
                 { data: 'Owner' },
                 ...
                 ....
                 { data: 'StartDate', type: 'date', dateFormat: 'mm/dd/yy' },
                 { data: 'Risk' }                   
               ]
         });

         var handsontable = $container.data('handsontable');
         $.ajax({
             url: "/EditInitiatives.svc/GetGridData",
             data: "session=" + $value.val(),
             type: "GET",
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             success: function (res) {                   
                 $container.handsontable('loadData', res.d);    
             },
             error: function (error) {
                 alert("Error: " + error.responseText);
             }
         });
     });

我不知道如何转换成'mm/dd/yy'格式?在哪里转换代码中的格式?

4

2 回答 2

0

handsontable需要一个字符串来格式化日期。您应该将其转换为正确的形式。

尝试这样的事情:

改变这个:

...
success: function (res) {                  
    $container.handsontable('loadData', res.d);    
},
...

有了这个:

...
success: function (res) {
    for(var i in res.d) {
        // get the milliseconds from your string "StartDate":"\/Date(1366848000000+0000)\/",
        // and create new Date object
        var date = new Date(+(res.d[i]['StartDate'].match(/\d+/i))); 
        // then put it back with format mm/dd/yy            
        res.d[i]['StartDate'] = (date.getMonth() + 1) + '-' + date.getDate() + date.getFullYear();
    }               
    $container.handsontable('loadData', res.d);    
},
...
于 2013-05-02T20:35:42.400 回答
0

您还可以在转换服务器端将其格式化为所需的字符串。这是我使用 C# 与我的 WCF 服务一起使用的一些代码:

        var adList = someSource
            .Select(ad => new
            {
                WhenTransacted = ad.WhenTransacted.HasValue ? ad.WhenTransacted.Value.ToString("MM/dd/yy") : string.Empty,
                Amount = ad.Amount,
                Reference = ad.Reference,
            })
            .ToList();
        return JsonConvert.SerializeObject(adList);
于 2013-06-27T23:22:07.670 回答