jqGrid 自定义格式在 addClass 上失败

发布于 2024-11-08 02:36:31 字数 219 浏览 2 评论 0原文

我从 json 填充一个新网格 使用自定义格式化程序 格式化程序已定义:

testFormatter(value,el,opts)
{
     if (value==0)
     {
          $(el).addClass("Fail");
     }
     …
}

我希望单元格使用 css 类 但如果我检查单元格,它们不会添加该类。

I populate a new grid from json
with custom formatter
the formatter is defined :

testFormatter(value,el,opts)
{
     if (value==0)
     {
          $(el).addClass("Fail");
     }
     …
}

I am expecting the cells to use the css class
but If I check the cells they don't add that class.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

反话 2024-11-15 02:36:31

您犯了使用自定义格式化程序的典型错误。重要的是要了解,如果网格包含将创建为字符串,则 jqGrid 具有最佳性能。在这种情况下,gridview:true 可以为您提供性能。任何 自定义格式化程序 都应该在 gridview 中工作: true 模式,因此自定义格式化程序没有参数,即 DOM 元素,因此您不能使用诸如 $(el).addClass("Fail");$(el).addClass("Fail");

在一些旧答案中(请参阅此处这里)您可以找到如何解决问题,但我建议您使用jqGrid 4.0.0的新功能:cellattr选项。为了理解:自定义格式化程序的目的不是添加一些 HTML 属性,例如类。例如,它应该用于将一些通用日期格式(如 yyyy-mm-dd)转换为本地化形式(如 dd.mm.yyyy(德国风格))。如果您不想更改列的格式,而只想添加一些属性,例如title(用于工具提示)、class(就像您的情况一样),style 等等新的 cellattr 选项就是您所需要的。

在您的情况下,您可以定义

cellattr: function(rowId, cellValue, rawObject, cm, rdata) {
    if (cellValue==0) {
        return ' class="Fail"';
    }
}

查看一个小演示此处

在此处输入图像描述

在演示中,我添加了 calsses ui-state-errorui- state-error-text'Client' 列的所有单元格,其中在 'Closed' 中设置了复选框。

You made the typical error of the usage of the custom formatter. It is important to understand that the jqGrid has the best performance if the grid contain will be created as the string. In the case the gridview:true gives you the performance. Any custom formatter should work in the gridview:true mode, so the custom formater has no parameter which are DOM element and so you can not use operations like $(el).addClass("Fail");

In some old answers (see here and here) you can find how the problem can be solved, but I would you suggest to use new feature of jqGrid 4.0.0: cellattr option. For undefrstanding: the purpose of the custom formatter is not add some HTML attributes like class for example. It should be used for example to convert some universal date format like yyyy-mm-dd to localized form like dd.mm.yyyy (German style). If you don't want to change format of the column, but want only add some attributes like title (used for tooltips), class (like in your case), style and so on the new cellattr option is what you need.

In you case you can define

cellattr: function(rowId, cellValue, rawObject, cm, rdata) {
    if (cellValue==0) {
        return ' class="Fail"';
    }
}

See a small demo here:

enter image description here

In the demo I added calsses ui-state-error and ui-state-error-text to all cells of 'Client' column where in the 'Closed' the checkbox is set.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文