You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Kendo Grid中根据字段值设置条件样式?

ASP.NET Kendo Grid 条件添加删除线样式解决方案

你的代码不生效是因为HtmlAttributes是服务器端生成的属性,无法解析客户端的# if #模板逻辑,必须通过模板方法实现行级条件渲染,以下两种方案都可以解决问题:

方法1:服务器端模板(Template)

直接在服务器端渲染时判断模型值,生成对应样式的HTML:

columns.Bound(c => c.ProviderLiteral)
       .Template(@<text>
           @if (item.ServiceStatusId == 5)
           {
               <span style="text-decoration: line-through;" class="Assignment_Courses_Grid_Item_Center FontSize10">@item.ProviderLiteral</span>
           }
           else
           {
               <span class="Assignment_Courses_Grid_Item_Center FontSize10">@item.ProviderLiteral</span>
           }
       </text>)
       .Title(Resources.Ces.MyTasksPrograms_Grid_Header_Provider)
       .HeaderHtmlAttributes(new { @class = "Assignment_Courses_Grid_Header_Center" });

方法2:客户端模板(ClientTemplate)

在客户端浏览器渲染表格时,通过Kendo模板语法判断行数据:

columns.Bound(c => c.ProviderLiteral)
       .ClientTemplate("# if (ServiceStatusId == 5) { #" +
                       "<span style='text-decoration: line-through;' class='Assignment_Courses_Grid_Item_Center FontSize10'>#= ProviderLiteral #</span>" +
                       "# } else { #" +
                       "<span class='Assignment_Courses_Grid_Item_Center FontSize10'>#= ProviderLiteral #</span>" +
                       "# } #")
       .Title(Resources.Ces.MyTasksPrograms_Grid_Header_Provider)
       .HeaderHtmlAttributes(new { @class = "Assignment_Courses_Grid_Header_Center" });

两种方案的区别:

  • 服务器端模板适合数据绑定后不需要动态修改的场景,HTML直接在服务器生成
  • 客户端模板适合分页、筛选等需要动态重新渲染数据的场景,逻辑在浏览器端执行

内容的提问来源于stack exchange,提问作者Wail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:45:43