猿问

jqGrid自定义格式在addClass上失败

我用定义格式器的自定义格式器从json填充了一个新网格:


testFormatter(value,el,opts)

{

     if (value==0)

     {

          $(el).addClass("Fail");

     }

     …

}

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


一只萌萌小番薯
浏览 564回答 2
2回答

杨__羊羊

您犯了使用自定义格式化程序的典型错误。重要的是要理解,如果将网格包含创建为字符串,则jqGrid的性能最佳。在这种情况下,可以gridview:true为您提供性能。任何自定义格式化程序都应在该gridview:true模式下工作,因此自定义格式化程序没有 DOM元素作为参数,因此您不能使用类似$(el).addClass("Fail");在一些旧的答案中(请参见此处和此处),您可以找到如何解决问题的方法,但是我建议您使用jqGrid 4.0.0:cellattroption的新功能。出于不确定的目的:自定义格式化程序的目的不是添加一些HTML属性,例如class。例如,应将其用于将某些通用日期格式(如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-error和添加ui-state-error-text到设置了复选框的'Client'column的所有单元'Closed'格中。

红糖糍粑

有许多有趣的新选项,文档中尚未描述。例如,列模板是在jqGrid 3.8.2中引入的,但在文档中仍未进行描述(请参见此处)。如果您在trirand论坛中搜索,cellattr则会找到一些信息。 
随时随地看视频慕课网APP

相关分类

JQuery
我要回答