我想使用选择编辑类型有条件地为列文本着色。如果我使用自定义格式化程序,则值会更改。下面是我不起作用的代码片段,
function generateEventHandlerGrid(eventsJson){
var eventGrid = $("#eventGrid");
eventGrid.jqGrid({
datatype: 'local',
data: eventsJson.eventInfo,
jsonReader: {repeatitems: false},
colNames: ['Event Category', 'Event Creation'],
{name: 'eventCategory', index: 'eventCategory',align:"center"},
{name: 'enabled', index: 'enabled', width:"100px",align:"center",editable:true,edittype: 'select',
editoptions: {value: "1:Enable;0:Disable"}, formatter: function ( cellvalue, options, rowObject ){
if (rowObject.enabled == 1){
var cellHtml = "<span style='color:" + "red" + "' originalValue='" + rowObject.enabled + "'>" + "Enable" + "</span>";
return cellHtml;
}else{
var cellHtml = "<span style='color:" + "green" + "' originalValue='" + rowObject.enabled + "'>" + "Disable" + "</span>";
return cellHtml;
}
}}],
viewrecords: true,
gridview: true,
rownumbers: true,
shrinkToFit: false,
height: strMinimumHeight,
editurl: "clientArray",
restoreAfterSelect: false,
loadonce: true,
}
如何在没有自定义格式化程序的情况下根据值设置文本颜色?
自定义格式化程序的目标是设置单元格内容的格式。您尝试在当前代码中执行的操作是在单元格中的外部 DOM 元素上设置style
属性。最好的功能是cellattr
回调。因此,您仍然可以使用一些格式化程序,例如,将内容格式化为日期,并且仍然设置一些样式或类,这会更改单元格的属性。
回调cellattr
参数的确切列表取决于您使用的 jqGrid 的版本和分支。您可以尝试使用以下代码将formatter
替换为cellattr
cellattr: function (rowid, cellValue, rowData, cm, item) {
return " style='color:" + (rowData.enabled == 1 ? "red" : "green") + "'";
}