将数据源绑定到 Kendo 网格,其中某些字段可能不存在于 JSON 中



我有一个剑道网格,数据与webApi的结果绑定。下面是代码的快照。这用于渲染剑道网格。现在在 JSON 结果中,可能会出现"标称电压"字段不存在的情况。换句话说,有些结果可能会返回字段,有些可能不会。如果未返回该字段,则代码将失败。我会得到错误,比如字段未定义。 在加载剑道网格控件时可以处理这个问题吗?

$scope.columns = [{
field: 'businessCode',
title: 'Business Code',
width: '120px',
}, {
field: 'nominalVoltage',
title: 'Nominal Voltage',
width: '120px'
}];
var options = {
dataSource: {
data: data
},
width: '100%',
resizable: true,
sortable: true,
scrollable: true,
reorderable: true,
dataBinding: function (e) {
var pageSizes = e.sender.dataSource.pageSize() || 20;
},
pageable: {
pageSize: pageSize,
pageSizes: [5, 10, 20, 50, 100, 200],
refresh: true
},
columns: $scope.columns
};

您可以在需要验证的网格列上应用条件template属性:

field: 'nominalVoltage',
title: 'Nominal Voltage',
width: '120px',
template: "#if(nominalVoltage) {#:nominalVoltage#} else{'Oops nothing found'}#"

或者模板作为函数,

template: validateNominalVoltage
function validateNominalVoltage(dataItem) {
return dataItem.nominalVoltage ? dataItem.nominalVoltage : 'Oops nothing found';
}

通常,此方法用于修改数据的显示方式,即使用外部HTML模板加粗内容,但在您的情况下,这将适用于在显示之前检查nominalVoltage属性是否包含值。

您可以为数据设置schema

schema: {
model: {
businessCode: { type: "string" },
nominalVoltage: { type: "number" },
}
}

您可以像下面这样定义模板

//field: 'nominalVoltage', // do not include it
template: function(data) {
return data.nominalVoltage ? data.nominalVoltage : "";
},
title: 'Nominal Voltage',
width: '120px'

最新更新