KendoGrid JavaScript运行时错误:模板无效

时间:2013-10-16 22:15:46

标签: javascript sql json kendo-ui kendo-grid

试图找出剑道世界,并将网格设置为json数组数据源。

Error is "JavaScript runtime error: Invalid template: <tr
data-uid="#=data.uid#" role='row'><td  role='gridcell'>#=data.Account
Num==null?'':data.Account Num#</td>...".

我注意到在这个错误中我看到空值,想知道这是否意味着数据没有绑定?

我看到列标题,但不是任何行。我还必须提一下,我的数据中没有任何ID字段,因为我正在使用SQL视图中的临时表。

function populateGrid(search) {
    $("#grdAttributes").kendoGrid({
        dataSource: {
            transport: {
                read: {
                    url: "http://127.0.0.2:6080/arcgis/rest/services/WW/WW2/MapServer/exts/RestSOE/Search%20Query?columnName=" + search.columnName + "&operand=" + search.operand + "&searchVal=" + search.searchVal + "&f=",
                    dataType: "json",
                    type: 'GET'
                }
            },
        },
        serverPaging: true,
        serverSorting: true,
        serverFiltering: true,
        scrollable: true,
        height: 150

    });
    $("#grdAttributes").data().kendoGrid.dataSource.view()
};

如果我继续浏览VS2012中的错误,我会看到网格中的列标题。只是没有行数据。 (以下示例JSON :)

 -[{
     -"Address": "PO BOX 20",
     -"City": "HAVENWOOD",
     -"Location": "",
     -"Name 1": "UNIVERSITY",
     -"Name 2": "",
     -"Street": "NEY AVE",
     -"Street Num": "16",
     -"Legacy ROD Num": null - "Repeat Client": "Y" -
 }, ...

这是错误的开始:

`Unhandled exception at line 11, column 6788 in
http://--------:51392/WW/js/kendo.web.min.js 0x800a139e - JavaScript
runtime error: Invalid template:'<tr data-uid="#=data.uid#"
role='row'><td  role='gridcell'>#=data.Account
Num==null?'':data.Account Num#</td><td 
role='gridcell'>#=data.address==null?'':data.address#</td><td 
role='gridcell'>#=data.Arb Location==null?'':data.Location#</td><td 
role='gridcell'>#=data.WNum==null?'':data.Num#</td><td`

希望这足以获得一些反馈。 [敲我的头]。提前谢谢!

1 个答案:

答案 0 :(得分:9)

很难说完全,但看起来生成的模板有问题,因为数据字段名称中有空格,例如:

'帐户号码',并且在模板中它正在尝试访问“data.Account Num”,这当然不起作用。

将您的数据设置为没有空格,以查看是否确实存在问题。 如果是问题,另一个解决方案(如果你想保留空格)将手动输入列而不是让它自动生成它。

......处理空间:

首先使用以下字段设置数据源方案:

schema: {
    data: "Data",
    model: {
        fields: {
            "Name": { type: "string" },
            "Account Num": { type: "string" }
        }
    }
}

然后,对于您的列,使用模板定义它们,如下所示:

columns: [
   {
      field: "Name",
      title: "Name",
      template: "#=data['Name']==null?'':data['Name']#"
   },
   {
      field: "Account Num",
      title: "Account Num",
      template: "#=data['Account Num']==null?'':data['Account Num']#"
   }
]

你最初拥有的是kendo试图自己生成模板,但它试图访问

data.Account Num

当然在javascript中不起作用,所以相反,您可以手动定义每列的模板来代替访问

data['Account Num']

这将正常工作,并希望得到你正在寻找的结果。