我有一个子网格,我想用前面的'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()
)
提前致谢。
然而,管理在剑道之外解决它。
我将我的列添加到控制器内部的列表中,按时间戳对其进行排序并循环遍历它。
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));
}
}