如何防止根据 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");
我正在尝试突出显示 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");