过滤时,Kendo Telerik网格中是否可以进行条件格式化?

时间:2018-04-23 10:10:31

标签: javascript asp.net-mvc kendo-ui telerik

我想在应用过滤器时更改Kendo Telerik网格中行的背景颜色。我有和ASP.NET Mvc应用程序。有可能吗?

2 个答案:

答案 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>

Demo

现在,还有另一种方法,即根据其他用户的建议,自定义网格外的网格样式。它使网格的初始化变得简单并在渲染行之后处理样式(在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);
}

Demo

注意:我在上面的代码段中使用了setTimeout,因为有时在DOM元素完成渲染之前会调用dataBound事件。

上面的两个例子我都在网格过滤时在行中添加了bg颜色,你必须根据dataSource.filter()结果对象创建条件,其中包含所有过滤器设置。

答案 1 :(得分:0)

您可以创建一个函数来检查kendo网格上是否存在任何过滤器,然后浏览现有网格行并将最近的背景颜色设置为您想要的任何颜色。