如何从 jqGrid 列获取单元格值以对背景色进行条件格式设置

2023-12-10

我正在使用 jqGrid 树网格,我想根据单元格中数据的值(它是一个整数)来格式化列的背景颜色:

这是我设置列的示例:

             {
                 name: 'missingBooks',
                 cellattr: function (rowId, tv, rawObject, cm, rdata) {

                 //conditional formatting
                     if (rawObject[11] > 0) {
                         return 'style="background-color:#FFCCCC"';
                     }
                 },
                 width: 75,
                 unformat: originalValueUnFormatter,
                 formatter: missingBooksFormatter,
                 align: "right",
                 index: 'missingBooks',
                 hidden: false,
                 sorttype: 'int',
                 sortable: true
             },

这工作正常,但我的问题是在 cellAttr 回调中。在此条件格式行中:

      if (rawObject[11] > 0) {
                         return 'style="background-color:#FFCCCC"';
                     }

我想重用这个逻辑,所以我不想索引到 rawObject 并找出我正在使用的列。我希望有一种方法可以做这样的事情:

       if (rawObject.missingBooks > 0) {
                         return 'style="background-color:#FFCCCC"';
                     }

但这似乎是未定义的。这样,如果我添加新列,我不必重新索引所有这些条件格式代码。


我明白这个问题。我建议 Tony 对 jqGrid 代码进行一些更改。大多数情况下修改就足够了这个地方在代码中先填写rd然后在下一个 for 循环调用中addCell with rd作为附加参数。功能addCell可以将信息转发至formatColformatCol可以打电话cellattr带附加参数rd其中的信息格式与您想要的格式完全相同。

尽管如此,无需对 jqGrid 代码进行任何更改,就可以相对轻松地获得几乎与您所需相同的结果。要做到这一点,只需构造一个映射对象,它可以为我们提供列中的索引rawObject根据名称。

例如我们可以使用beforeRequest or beforeProcessing如果地图尚未填充,则填充地图。代码看起来像

var colMap = {};
$("#tree").jqGrid({
    ...
    colModel: [
        {name: 'missingBooks',
            cellattr: function (rowId, tv, rawObject, cm, rdata) {
                //conditional formatting
                 if (Number(rawObject[colMap.missingBooks]) > 0) {
                     return ' style="background-color:#FFCCCC"';
                 } else {
                     return '';
                 }
            }
            ...
    ],
    beforeRequest: function () {
        if ($.isEmptyObject(colMap)) {
            var i, cmi,
                cm = $(this).jqGrid('getGridParam', 'colModel'),
                l = cm.length;
            for (i = 0; i < l; i++) {
                cmi = cm[i];
                colMap[cmi.name] = i;
            }
        }
    }
});

因此,代码将不再使用索引,例如rawObject[11]其中索引11可以在代码中进行一些修改后更改。

可以看对应的demohere.

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

如何从 jqGrid 列获取单元格值以对背景色进行条件格式设置 的相关文章

随机推荐

  • 再次容器内联块

    看这个 我想制作一个主容器 它有 2 个子容器 左 右 各占屏幕宽度的 50 左边必须包含一张照片 右侧必须包含文本 h2 和 p 正下方 文本应该位于图像的中间 我需要它来描述商店中的产品 我正在尝试这个 div border 1px s
  • 为 Gradle 中的所有项目配置存储库

    我正在尝试为所有子项目配置存储库 我有主要的build gradle buildscript repositories mavenLocal mavenCentral google jcenter dependencies NOTE Do
  • 声明未初始化变量的更好方法

    一些 libc 函数 例如sigemptyset set mut sigset t 获取一个指向变量的指针 将其视为未初始化并初始化它 我最终得到这个代码 let mut newmask std mem uninitialized libc
  • System.Text.Json 和多态代码:不适用于 WebApi 控制器

    随着 NET 7 0 的发布 System Text Json应该支持多态代码 不幸的是 当您需要从控制器的方法返回派生类型的实例时 它似乎无法开箱即用 例如 假设以下模型 public class Base public class De
  • java中的密钥库密码加密

    我需要在调用远程队列之前设置以下变量 System setProperty javax net ssl trustStore C certs trustStore jks System setProperty javax net ssl k
  • 通过 Chrome 扩展程序在 Facebook 上分享

    我想通过 chrome 扩展在 facebook 墙上分享当前打开的选项卡 url 为此 我正在使用https facebook com share php早些时候 它首先给我登录选项 然后是共享框 由于 facebook 已弃用此方法 我
  • 在 Swift 中动画字符串淡入/淡出

    我是编程新手 但在过去的两个月里 我在 iOS 版 Swift 的学习上取得了长足的进步 我正在制作一个简单的打字游戏 我构建项目的方式是我有一个隐藏的UITextView检测玩家按下的字符 然后将该字符串与可见的字符串相匹配UITextV
  • 使用 chdir() 从终端更改目录

    我在用chdir 将目录更改为作为参数传递给该函数的值 我明白当我使用运行我的C程序时gcc myCd c and a out 这会将目录更改为 C 程序 内 的父目录 即为 a out 进程生成一个子进程 并且目录的更改发生在该子进程内
  • 什么是堆栈溢出错误?

    什么是StackOverflowError 是什么原因造成的 应该如何处理 参数和局部变量分配在stack 对于引用类型 对象位于heap堆栈中的变量引用堆上的该对象 堆栈通常位于upper地址空间的末尾 当它用完时 它会流向bottom地
  • Flutter Web - 获取 Firestore 集合

    我有一个 flutter 移动应用程序 效果非常好 但是当尝试将相同的代码迁移到 flutter web 时 我无法使用 就像 StreamBuilder 不想在 Web 模式下工作 而只适用于移动应用程序模式 在 dart 文件的顶部 我
  • 如何使用 Selenium 单击 cloudflare 的“验证您是人类”复选框挑战

    我需要使用 Python 自动下载此网页中的 csv 文件 https pace coe int en aplist committees 9 commission des questions politiques et de la dem
  • 是否可以在onTaskRemoved中执行网络任务?

    我需要当我的应用程序完全关闭 从后台清除 时将我的请求发布到服务器 并且当响应服务停止工作时 这是我的服务类 public class OnClearFromRecentService extends Service private Sha
  • 如何在 Swift 中使 NSBundle 的缓存失效

    当我尝试本地化字符串时 它返回以前的值 我发现在这个帖子您实际上必须使缓存无效 或多或少这是我尝试过的代码 里面localizableStringsPath该文件实际上显示了我从 inet 下载的翻译 但捆绑包返回了以前的值 我必须关闭应用
  • JS 异步/等待 vs Promise vs 回调

    我试图理解这 3 个回调和承诺之间的区别 但我不明白 async await 的用法 我知道这是承诺的语法糖 但我尝试过的方法没有用 我正在分享我试图理解这一切的一段代码 我尝试过使用数组 var array 1 2 3 和 2 个功能 g
  • 如何“安装”log4j 包?

    我已经下载了 Eclipse 插件的代码 该代码使用 log4j 但它不仅仅将其用作库 称为 jar 而是用作 捆绑包 所以它无法编译 原因如下 无法解析捆绑包 org apache log4j 我不太确定解决这个问题的正确方法是什么 我知
  • 如何验证坐标是否在列表中

    我正在生成随机坐标并添加到我的列表中 但首先我需要验证该坐标是否已经存在 我正在尝试使用member但是当我调试时我发现它不起作用 我的代码基本上是这样的 L is a list and Q is a count that define t
  • 如何在 Spring Data 存储库上测试 Spring 的声明式缓存支持?

    我开发了一个Spring数据存储库 MemberRepository接口 扩展org springframework data jpa repository JpaRepository MemberRepository有一个方法 Cache
  • Google 应用引擎多种语言

    在谷歌应用程序引擎中 是否可以用两种不同的语言编写应用程序 例如蟒蛇和PHP 我对 Google 应用引擎非常陌生 不知道如何去做 如果可以的话会收取任何费用吗 是的 你可以使用modules 每个模块可以是不同的语言 仅当您超过免费配额时
  • 创建输入作为输入的子项

    是否可以创建一个作为文本子项的按钮
  • 如何从 jqGrid 列获取单元格值以对背景色进行条件格式设置

    我正在使用 jqGrid 树网格 我想根据单元格中数据的值 它是一个整数 来格式化列的背景颜色 这是我设置列的示例 name missingBooks cellattr function rowId tv rawObject cm rdat