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

问题描述 投票:0回答:1

我有一个子网格,我想用前面的'Value'列单元格客户端减去'Value'列单元格,我尝试使用ClientTemplate但是我无法让它工作,它没有'看起来像Telerik有关于此的任何记录。

例如,假设我正在使用'SensorId'3查看'Value',我希望'Change'列为:'Value',其中'SensorId'== 3减去'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()
)

提前致谢。

c# asp.net-mvc kendo-asp.net-mvc
1个回答
0
投票

然而,管理在剑道之外解决它。

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

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));
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.