试图找出剑道世界,并将网格设置为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`
希望这足以获得一些反馈。 [敲我的头]。提前谢谢!
答案 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']
这将正常工作,并希望得到你正在寻找的结果。