如何使用选择编辑类型且不使用自定义格式化程序有条件地为列着色



我想使用选择编辑类型有条件地为列文本着色。如果我使用自定义格式化程序,则值会更改。下面是我不起作用的代码片段,

    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") + "'";
}

相关内容

最新更新