如何防止根据 Jqgrid 中的单元格值条件选择下拉列表

How to prevent selecting a dropdown based on cell value condition in Jqgrid

我正在尝试突出显示 Red 中的单元格,无论哪个值与我的预定义值不匹配 和 1. i want to get the count of red cells in each row in the column Error_cells_Count,现在在演示页面我手动输入了计数 2. and i want to prevent user from selecting the dropdown in status column if the row has any red cells。 我设法突出显示了单元格。 请帮助获取 Error_cells_Count 列中的红细胞计数并防止用户选择下拉列表。 这是我的演示页面 http://jsfiddle.net/h8Lzgh7d/27/ jqgrid版本版本为4.14.0 并且还请建议是否有可能通过用字典值

替换红细胞值来自动更正红细胞来预定义字典并自动更正红细胞

首先,我建议您使用 cellattr 在单元格上设置任何 CSS 属性。您可以使用 editable 定义为 函数 的秒数,以允许根据您的一些自定义条件编辑单元格(有关详细信息,请参阅 the wiki article)。

固定的demo可以是下面的https://jsfiddle.net/OlegKi/h8Lzgh7d/30/。它使用以下代码:

var hilightcolorcell=["PURPLE","PINK","GREEN"];
var hilightcahractercell=["Character 1","Character 2","Character 3"];

jQuery("#rowed5").jqGrid({
    datatype: "local",
    shrinkToFit: false,
    data: mydata,
    height: 320,
    autowidth:true,
    colNames:['RowID','Error_Cells_Count','status','note','color_name','character_name','Variant ID'],
    colModel: [ 
        {name:'id', width:55, sorttype:"int",align:"center",frozen:true},
        {name:'Error_Cells_Count', width:100, sorttype:"int",
            align:"center",frozen:true,
            cellattr: function (rowid, cellValue) {
                if (cellValue != null) {
                    var value = parseInt(cellValue, 10);
                    return " class='" +
                        (value > 0 ? "redcells" : "greencells") +
                        "'";
                }
            }},
        {name:'status', width:100,
            editable: function (options) {
                var item = $(this).jqGrid("getLocalRow", options.rowid);
                return (item.Error_Cells_Count == null || item.Error_Cells_Count <= 0) &&
                    $.inArray(item.color_name, hilightcolorcell) >= 0 &&
                    $.inArray(item.character_name, hilightcahractercell) >= 0;
            },
            edittype:"select",editoptions:{value:"Approve:Approve"}},
        {name:'note',width:100, sortable:false,editable: true,
            edittype:"textarea", editoptions:{rows:"2",cols:"10"}},
        {name:'color_name',
            cellattr: function (rowid, cellValue) {
                if ($.inArray(cellValue, hilightcolorcell) < 0) {
                    return " class='redcells'";
                }
            }},
        {name:'character_name',
            cellattr: function (rowid, cellValue) {
                if ($.inArray(cellValue, hilightcahractercell) < 0) {
                    return " class='redcells'";
                }
            }},
        {name:'v_id'}
    ],
    cmTemplate: { width:110 }, // define default properties for colModel
    editurl: "functions.php",
    cellEdit: true,
    cellsubmit: 'remote',
    cellurl: 'functions.php',
    searching: {
        stringResult: true,
        searchOnEnter: false,
        defaultSearch : "cn"
    }
}).jqGrid("setFrozenColumns")
    .jqGrid("filterToolbar");