未捕获的SyntaxError:意外的数字,在Kendo Grid中动态生成列

时间:2016-03-23 13:24:30

标签: javascript jquery kendo-ui kendo-grid

我在使用动态列创建网格时获得Uncaught SyntaxError: Unexpected number

对于参考我已经遵循jsbin并尝试将列标题Balance更新为03/22/2016

http://jsbin.com/garifabuda/edit?html,js,output

请在javascript中进行后续更改,并在控制台中检查错误。

var data = [{
  "Name": "daya",
  "Role": "Developer",
  "Dept": "Dev",
  "Date": "\/Date(836438400000)\/",
  "03/22/2016": 23 // Previously it was Balance
}, {
  "Name": "siva",
  "Role": "Developer",
  "Dept": "Dev",
  "Date": "\/Date(836438400000)\/",
  "03/22/2016": 23 // Previously it was Balance
}, {
  "Name": "sivadaya",
  "Role": "Developer",
  "Dept": "Dev",
  "Date": "\/Date(836438400000)\/",
  "03/22/2016": 23 // Previously it was Balance
}, {
  "Name": "dayasiva",
  "Role": "Developer",
  "Dept": "Dev",
  "Date": "\/Date(836438400000)\/",
  "03/22/2016": 23 // Previously it was Balance
}];

任何人都可以为此提供任何解决方案。我希望列标题作为日期字符串。 任何帮助都将受到高度赞赏。

更新1

此处所有列都是动态生成的,因此可能不会只有" 03/22/2016"。它也可以是其他日期。

2 个答案:

答案 0 :(得分:1)

最后,我做了一些解决方法,因为剑道不支持特殊字符(特别是/).

我所做的是,

  1. 通过添加d_X来更改列名,并填充 它。所以现在我的列名就像下面的
  2.   

    d_03X22X2016

    1. 之后在网格的数据绑定事件中添加了以下代码。

               dataBound: function (e) {
      
                  var obj = $('.k-header .k-link');
      
                  for (var i = 0; i < obj.length; i++) {
                      obj[i].innerHTML = obj[i].innerHTML.replace('d_', '').replace('X', '/').replace('X', '/');
                  }
              }
      
    2. 它会从视图中替换所有预定义的(d_,X)特殊字符,并按预期显示给我。 这不是完美的解决方案,而是一种解决这个问题的技巧。

答案 1 :(得分:0)

这是一个可能的解决方案:

http://jsbin.com/yivufoduwo/1/edit?html,js,output

我所做的只是在您的模型中添加了columns集合,然后告诉网格将其用于您的列:

我更改了generateModel函数以包含这段代码:

 if (property === "Balance") {
   columns.push({
     field: property,
     headerTemplate: "22/3/2016"
   });
 } else {
   columns.push({
     field: property,
     headerTemplate: property
   });
 }

根据您的需要,将新的headerTemplate项添加到列中。这可以更改,以便您在此处显示其他内容,您可以为其提供传递给函数的选项。

然后在网格初始化中添加以下行:

columns:model.columns

希望这就是你要找的东西。

通过尝试将日期用作字段名称,这会破坏不接受空格或特殊字符的列的命名系统。