Kendo UI MVC 网格,列单元格减去前一个列单元格

Kendo UI MVC Grid, column-cell subtracted with the previous column-cell

我有一个子网格,我想用以前的 'Value' 列单元格客户端减去 'Value' 列单元格,我尝试使用 ClientTemplate 但我不能'它无法正常工作,而且 Telerik 似乎没有任何关于此的文档。

例如, 假设我正在查看带有 'SensorId' 3 的 'Value',我希望 'Change' 列为: 'Value' 其中 'SensorId' == 3 subtract 'Value' 其中 'SensorId' == 4,依此类推。

@(
Html.Kendo().Grid<ErvinBeta.Models.ViewModels.ValueViewModel>().Name("ValueGrid#=SensorId#")
    .DataSource(ds => ds.Ajax()
    .Model(m => m.Id(sv => sv.SensorId))
    .PageSize(15)
    .Read(read => read.Action("ReadValue", "Home", new { SensorId = "#=SensorId#" }))
    .Sort(sort => sort.Add(sv => sv.Timestamp).Descending()))

    .Columns(columns =>
    {
        columns.Bound(sensorValue => sensorValue.ValueId).Visible(false);
        columns.Bound(sensorValue => sensorValue.SensorId).Visible(false);
        columns.Bound(sensorValue => sensorValue.Value).Title("Value").HtmlAttributes(new { @class = "valueColumn" }).Width(150).Filterable(ftb => ftb.Cell(cell => cell.Operator("contains")).Cell(cell => cell.ShowOperators(false)));
        columns.Bound(sensorValue => sensorValue.Category.Unit).Title("Unit").Width(200).Filterable(false);
        columns.Bound(sensorValue => sensorValue.Timestamp).Title("Timestamp").Format("{0:yyyy-MM-dd}").Filterable(ftb => ftb.Cell(cell => cell.Operator("contains")).Cell(cell => cell.ShowOperators(false)));
    })
    .Scrollable()
    .Pageable()
    .Sortable()
    .Filterable(ftb => ftb.Mode(GridFilterMode.Row))
    .HtmlAttributes(new { style = "height: 600px;", @class="valueTable"})
    .ToClientTemplate()
)

提前致谢。

设法解决了问题,在 Kendo 之外

我将我的列添加到控制器内的列表中,按时间戳对其进行排序并循环遍历它。

public ActionResult ReadValue([DataSourceRequest] DataSourceRequest request, int sensorId){

        using (var db = new Entity())
        {
            var sensorValues = db.SensorValue.Where(sv => sv.SensorId == sensorId)
                .Select(select => new ValueViewModel
                {
                    ValueId = select.Id,
                    SensorId = select.SensorId,
                    Value = select.Value,
                    Comment = select.Comment,
                    Timestamp = select.Timestamp,
                    Category = new CategoryViewModel()
                    {
                        CategoryId = select.ValueCategory.Id,
                        CategoryName = select.ValueCategory.Name,
                        Unit = select.ValueCategory.Unit
                    },
                    EntryTimestamp = select.EntryTimestamp
                }).OrderBy(order => order.Timestamp).ToList();
            for(int i=0; i< sensorValues.Count;i++)
            {
                if(i>0)
                {
                    sensorValues[i].ChangedValue = sensorValues[i].Value - sensorValues[i - 1].Value;
                }
                else
                {
                    sensorValues[i].ChangedValue = 0;
                }
            }
            return Json(sensorValues.ToDataSourceResult(request));
        }
    }