jqGrid 自定义格式在 addClass 上失败
我从 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您犯了使用自定义格式化程序的典型错误。重要的是要了解,如果网格包含将创建为字符串,则 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
选项就是您所需要的。在您的情况下,您可以定义
查看一个小演示此处:
在演示中,我添加了 calsses
ui-state-error
和ui- 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 thegridview: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 liketitle
(used for tooltips),class
(like in your case),style
and so on the newcellattr
option is what you need.In you case you can define
See a small demo here:
In the demo I added calsses
ui-state-error
andui-state-error-text
to all cells of'Client'
column where in the'Closed'
the checkbox is set.