我尝试做的是将一些数据存储在使用其他列数据计算的特定列中。
我目前有一个函数可以返回JSON
中给定function getAvailableLicenses(id) {
var url = "/Host/Organization/AvailableLicenses/" + id;
$.get(url, function (data) {
return data.AvailableLicenses;
});
}
的可用许可证数量
$("#OrganizationGrid").kendoGrid({
dataSource: viewModel.get("orgDataSource"),
filterable: {
extra: false
},
sortable: true,
pageable: true,
columns: [
{ field: "Id", hidden: true },
{ field: "Name", template: "<a href='/Host/Organization/Detail/#:Id#'>#:Name#</a>" },
{ field: "LicenseNumber", title: "Number of Licenses" },
{ field: null, title: "Available Licenses", template: "#= getAvailableLicenses(Id) #" },
{ field: "LicenseExpiration", title: "License Expiration", format: "{0:MM/dd/yyyy}" },
{ field: "State" },
{ field: "Active" }
],
editable: false
});
如何将此号码存储在名为&#34; AvailableLicenses&#34;?
的列中这是我当前的网格:
Id
如您所见,我尝试使用模板创建一个空列,该模板调用给定AvailableLicenses
的函数。
通过使用Fiddler,我可以看到确实正在为所有行调用该函数,但Undefined
列只为每一行显示{{1}}。
我有什么东西可以在这里找到工作吗?
答案 0 :(得分:0)
我认为更好的方法是使用dataSource parse()
函数
首先:你的列配置必须改变如下:
{ field: "AvalableLicenses", title: "Available Licenses" },
你可以使用你的模板。
第二,在dataSource()
内你可以添加:
schema: {
parse: function(response) {
for (var i = 0; i < response.length; i++) {
response[i].AvalableLicenses= null;
response[i].AvalableLicenses = getAvailableLicenses(response[i].Id)
}
return response;
}
}
编辑:
如果你喜欢用你的方式,我没有看到你的配置有任何问题,可能你的$.get
返回未定义,或者你不期望的东西。
为了获得认可,我做了一个工作的例子。
希望这个帮助