Kendo UI 网格处理列模板中的缺失值
Kendo UI Grid handling missing values in column templates
我使用 Kendo UI 网格来显示数组数据,其中对象缺少某些字段。这是js代码:
var arr = [{b: "b1"}, {a: "a2", b: "b2"}];
$("#grid").kendoGrid({
dataSource: arr,
columns: [
{
title: "The A column",
field: 'a'
}, {
title: "The B column",
template: '<i>#=b#</i>'
}]
});
在此示例中,网格运行良好,第一行中缺少的 "a" 值显示为空单元格。
使用列模板时:
$("#grid").kendoGrid({
dataSource: arr,
columns: [
{
title: "The A column",
template: '<b>#=a#</b>'
}, {
title: "The B column",
template: '<i>#=b#</i>'
}]
});
它在控制台中显示错误:Uncaught ReferenceError: a is not defined。
甚至将模板替换为:
template: '<b>#=a || ""#</b>'
expression instead 没有帮助,所以我必须在构造 table 之前手动将缺失值设置为空字符串。有没有办法避免这种情况?
而不是:
template: '<b>#=a || ""#</b>'
你应该使用:
template: '<b>#=data.a || ""#</b>'
其中data
是KendoUI预定义的,等于行数据。否则 JavaScript 不知道 a
应该是 data
的一部分,并认为它本身就是一个抛出错误的变量。
您可以在以下代码段运行中看到它
$(document).ready(function() {
var arr = [{b: "b1"}, {a: "a2", b: "b2"}];
$("#grid").kendoGrid({
dataSource: arr,
columns: [
{
title: "The A column",
template: '<b>#= data.a || ""#</b>'
}, {
title: "The B column",
template: '<i>#=b#</i>'
}]
});
});
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.default.min.css">
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://cdn.kendostatic.com/2015.1.429/js/kendo.all.min.js"></script>
<div id="grid"></div>
我使用 Kendo UI 网格来显示数组数据,其中对象缺少某些字段。这是js代码:
var arr = [{b: "b1"}, {a: "a2", b: "b2"}];
$("#grid").kendoGrid({
dataSource: arr,
columns: [
{
title: "The A column",
field: 'a'
}, {
title: "The B column",
template: '<i>#=b#</i>'
}]
});
在此示例中,网格运行良好,第一行中缺少的 "a" 值显示为空单元格。
使用列模板时:
$("#grid").kendoGrid({
dataSource: arr,
columns: [
{
title: "The A column",
template: '<b>#=a#</b>'
}, {
title: "The B column",
template: '<i>#=b#</i>'
}]
});
它在控制台中显示错误:Uncaught ReferenceError: a is not defined。 甚至将模板替换为:
template: '<b>#=a || ""#</b>'
expression instead 没有帮助,所以我必须在构造 table 之前手动将缺失值设置为空字符串。有没有办法避免这种情况?
而不是:
template: '<b>#=a || ""#</b>'
你应该使用:
template: '<b>#=data.a || ""#</b>'
其中data
是KendoUI预定义的,等于行数据。否则 JavaScript 不知道 a
应该是 data
的一部分,并认为它本身就是一个抛出错误的变量。
您可以在以下代码段运行中看到它
$(document).ready(function() {
var arr = [{b: "b1"}, {a: "a2", b: "b2"}];
$("#grid").kendoGrid({
dataSource: arr,
columns: [
{
title: "The A column",
template: '<b>#= data.a || ""#</b>'
}, {
title: "The B column",
template: '<i>#=b#</i>'
}]
});
});
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.default.min.css">
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://cdn.kendostatic.com/2015.1.429/js/kendo.all.min.js"></script>
<div id="grid"></div>