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

时间:2017-08-18 09:16:03

标签: 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 并且还建议是否有任何可能的预定义字典并通过用字典值替换红色单元格值来自动更正红色单元格

1 个答案:

答案 0 :(得分:1)

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

固定演示可以是以下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");