Telerik MVC Grid 根据其他列值将列设为红色

2023-12-08

我有一个 Telerik MVC 网格,其中有两个字段

CustomerID and OrdersQuantity (can go negative)

我的网格看起来像这样

CustomerID                 OrdersQuantity

1                               10 
2                                3  
<font color="red">4*</font>    -10 
<font color="red">5*</font>    -20 
7                               10  

我想展示customerid红色并添加"*"符号如果OrdersQuantity is < 0

就像上面的例子一样,我想显示 customerid4* and 5* in Red


有两种方法可以实现此目的,一种用于服务器绑定,另一种用于 ajax 绑定。

简单说明一下:我创建了一个名为“SmallItem”的模型,它只具有属性、CustomerID 和 OrdersQuantity(均为 int),因此如果对 SmallItem 进行了任何引用,您就知道它来自哪里。

Server:

这一切都可以通过 Telerik Grid 的声明来实现:

@model IEnumerable<SmallItem>
@{Html.Telerik().Grid(Model)
      .Name("TestGrid")
      .Columns(columns =>
      {
          columns.Template(@<text>@(item.OrdersQuantity < 0 ? item.CustomerID.ToString() + "*" : item.CustomerID.ToString())</text>).Title("CustomerID");
          columns.Bound(s => s.OrdersQuantity).Title("Order Quantity");
      })
      .CellAction(cell =>
      {
          if(cell.Column.Title == "CustomerID")
          {
              SmallItem item = cell.DataItem;

              if(item.OrdersQuantity < 0)
              {
                  cell.HtmlAttributes["style"] = "color: red;";
              }
          }
      })
      .Render();
}

正如您在上面看到的,我正在使用模板列,并使用 Razor 语法,只需设置一个简单的 if 语句以在 CustomerID 字段旁边添加“*”。现在,更改单元格(而不是整行)属性的一种非常简单的方法是挂钩 CellAction 函数,该函数将为每个单元格执行。这里有一个简单的 if 语句,以确保我们位于 CustomerID 列中(请注意使用 Title 而不是 Member,因为这是一个模板列),然后您可以检查模型的特定实例对于 OrdersQuantity 的内容。如果它小于 0,只需将样式添加到 HtmlAttributes 集合中。

Ajax:

ajax 方法涉及使用一些 JavaScript,所有内容都可以在几行内涵盖。如果我的网格看起来像这样:

@{Html.Telerik().Grid<SmallItem>()
  .Name("AjaxTestGrid")
  .Columns(columns =>
  {
      columns.Bound(s => s.CustomerID).Title("Customer ID");
      columns.Bound(s => s.OrdersQuantity).Title("Order Quantity");
  })
  .DataBinding(dataBinding => dataBinding.Ajax().Select("_Test", "Grid"))
  .ClientEvents(clientEvents => clientEvents.OnRowDataBound("onRowDataBound"))
  .Render();}

然后,我可以利用 OnRowDataBound 事件,该事件会针对每一行触发。如果我使用这个 JavaScript:

    function onRowDataBound(e) {
    if (e.dataItem.OrdersQuantity < 0) {
        e.row.cells[0].innerHTML += "*";
        e.row.cells[0].style["color"] = "red";
    }
}

我只需检查该行的 dataItem(仅包含 CustomerID 和 OrdersQuantity),看看我们的 OrdersQuantity 是否小于 0,然后我只需访问特定单元格的 insideHTML 和样式集合(因为 CustomerID 是第一列,它位于索引 0 处) 。

两种方法都可以实现您正在寻找的内容,您实现哪一种方法仅取决于您如何绑定网格。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Telerik MVC Grid 根据其他列值将列设为红色 的相关文章

随机推荐

  • 是什么原因导致此错误“无法写入应用程序 file.ini”

    我的应用程序是用delphi构建的 它可以在除Windows 7 64位机器之外的其他平台上完美运行 每次尝试关闭应用程序都会给我这个错误 无法写入应用程序文件 ini 这是我的关闭代码 procedure TfrmMain FormClo
  • SwiftUI - 在视图中显示从 Firebase 获取的数据?

    Firebase 我试图在 SwiftUI 视图中显示从 Firestore 获取的数据 但遇到问题 我从 Firebase 提取数据没有问题 但我无法按照我想要的方式显示数据 我使用 MVVM 架构 我的模型是这样的 struct Use
  • SwiftUI - 列表编辑模式 - 如何更改删除按钮标题?

    有没有办法在编辑列表时更改删除按钮标题 例子 struct ContentView View State private var users Paul Taylor Adele var body some View NavigationVi
  • 使用 Youtube API 获取用户电子邮件

    如何使用 Youtube API 获取经过身份验证的用户电子邮件 我尝试使用channels list GET https www googleapis com youtube v3 channels part brandingSettin
  • 如何在 pygame 中将旋转限制为设定的度数?

    我的问题与下面问题的答案相关 旋转一个矩形 如何将旋转限制在图中红色标记的区域 我尝试了各种方法但没有成功 代码始终将指针保留在其他区域 我修改后的代码如下 import pygame math base64 pygame init scr
  • 使用 htaccess 删除单个查询参数

    由于不值得在这里讨论的原因 Google 一直在为我的一个网站建立索引 其中 URL 中包含不必要的查询字符串 我想将我的 htaccess 文件修改为 301 将所有这些请求重定向到 URL 而无需查询字符串中不需要的部分 但保留查询字符
  • Bootstrap 表单:如何动态创建单选按钮的唯一名称

    这个问题是这个问题的后续问题one This JSfiddle体现了我想要实现的目标 Final Solution由 Scaramouche 提供 下面的函数动态地建立一个 列表 其中单选按钮每组四个 每个组都应该有一个唯一的名称 这使得可
  • 在哪里存储将在我的应用程序中使用的常量对象

    可以说我有一个item 其中有字段 属性 Location 平均值 可用性 我有10 15个items 我想要预定义其值 或者将其写入某处 然后加载到要使用的代码中 哪一个是最佳实践 这些将是常量 只是启动参数 在应用程序生命周期中不会被修
  • C结构的大小

    struct st1 int a 1 int b 3 int c 6 int d 3 s1 struct st2 char a 3 s2 int main printf d d sizeof s1 sizeof s2 getchar 我得到
  • 相互交织的范围如何造成“数据竞争”? [复制]

    这个问题在这里已经有答案了 The 锈书讨论了拥有多个读取器和对一个对象的多个可变引用作为可能导致问题的数据竞争情况 例如 这段代码 fn main let mut x 1 let r1 mut x r1 2 let r2 mut x r2
  • 如何使用 Python ElementTree 将新数据附加到现有 XML?

    我是Python新手 元素树 我有以下 XML 示例
  • Cassandra CQL 选择查询不返回以时间戳作为 clusterkey 的记录

    Cassandra CQL 使用复合键和簇键创建的表 当我尝试执行 select from 分区键时 我能够检索所有数据 并且它也适用于关系运算符 但是 当我使用等于 运算符和正确的值查询特定的簇键时 它返回 0 行 Table CREAT
  • Pickle Python 序列化

    通俗地说 什么是 序列化 为什么需要它 我读了维基百科条目 但仍然不明白 为什么需要将数据转换为位序列以将其存储在文件中 我特别关心使用Pythonpickle模块进行序列化 谢谢你的时间 您可以保存程序 特定对象 的状态 想象一下您有一个
  • 当手机进入空闲状态时,startscan() 10 分钟后有结果

    我试图每 2 分钟扫描一次 wifi 网络 我正在为此使用服务 当手机处于 活动 或 使用中 状态后startscan 叫我得到SCAN RESULTS AVAILABLE ACTION6秒后所以我可以定期扫描无线网络 但是 在手机在一定时
  • 如何从 MySql 数据库获取日期到 C# DateTime 对象?

    我有一个 MySQL 数据库 其中某个字段包含日期 如何将其转换为 C DateTime object 以及如何转换 C DateTime对象以便我可以将其插入数据库 你将需要适用于 NET 的 MySQL 连接器 如果您还没有的话 为了让
  • Git远程测试

    我习惯使用 Github 作为备份或中央存储库 并在本地进行开发和测试 现在我有一台远程测试机 并且希望能够将本地提交推送到远程 以便远程工作目录更新 从而允许我对内容运行测试 1 我发现的大多数设置遥控器的说明都是使用 bare init
  • 为什么“git show”不提供有关重定向标准输出的分支的信息?

    以下是两个带有结果示例的命令 git show commit 6f367e05cc6457fd0c0fc59fe0476db06cffb383 HEAD gt master tag v7 32 origin master origin HE
  • 如何在 WooCommerce 中禁用全局缺货

    我的网站每天都会添加新产品 为每个新产品和缺货产品持续选择 不允许缺货 选项是没有效率的 目前 数据库不断增长 包含 2 000 多种产品 我发现每天执行相同的流程很乏味 使用functions php文件 我可以实现一些php代码来禁止所
  • 将组计数列添加到 PySpark 数据帧

    我来自 R 和整洁宇宙由于 PySpark 具有卓越的 Spark 处理能力 我正在努力将某些概念从一个上下文映射到另一个上下文 特别是 假设我有一个如下所示的数据集 x y a 5 a 8 a 7 b 1 我想添加一列 其中包含每个的行数
  • Telerik MVC Grid 根据其他列值将列设为红色

    我有一个 Telerik MVC 网格 其中有两个字段 CustomerID and OrdersQuantity can go negative 我的网格看起来像这样 CustomerID OrdersQuantity 1 10 2 3