将计算数据存储在Kendo Grid列中

时间:2016-02-10 21:48:05

标签: javascript kendo-ui kendo-grid

我尝试做的是将一些数据存储在使用其他列数据计算的特定列中。

我目前有一个函数可以返回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}}。

我有什么东西可以在这里找到工作吗?

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返回未定义,或者你不期望的东西。 为了获得认可,我做了一个工作的例子。

http://jsfiddle.net/jwocf897/

希望这个帮助