我想在应用过滤器时更改Kendo Telerik网格中行的背景颜色。我有和ASP.NET Mvc应用程序。有可能吗?
答案 0 :(得分:1)
Kendo网格有一个内置选项来更改TR
的显示方式,称为rowTemplate
。问题是当你使用它时,你必须处理整行创建:
columns: [{
title: "Id",
field: "Id"
}],
rowTemplate: kendo.template($("#grid-template").html()),
filter: function() {
rowAlt = 0; // This is a global variable
}
模板:
<script id="grid-template" type="text/x-kendo-template">
# let filter = $("\#grid").data("kendoGrid").dataSource.filter();
#<tr class='#
if (++rowAlt % 2 == 0) {
#k-alt #
}
if (filter != null) {
#filtered-row#
}
#'><td>#=data.Id#</td>#
#<tr>##
</script>
现在,还有另一种方法,即根据其他用户的建议,自定义网格外的网格样式。它使网格的初始化变得简单并在渲染行之后处理样式(在dataBound
事件中):
filterable: true,
columns: [{
title: "Id",
field: "Id"
}],
dataBound: function() {
window.setTimeout(function() {
if (this.dataSource.filter()) {
this.tbody.find("tr").addClass("filtered-row");
}
}.bind(this), 1);
}
注意:我在上面的代码段中使用了setTimeout
,因为有时在DOM元素完成渲染之前会调用dataBound
事件。
上面的两个例子我都在网格过滤时在行中添加了bg颜色,你必须根据dataSource.filter()
结果对象创建条件,其中包含所有过滤器设置。
答案 1 :(得分:0)
您可以创建一个函数来检查kendo网格上是否存在任何过滤器,然后浏览现有网格行并将最近的背景颜色设置为您想要的任何颜色。