我有一个带子网格的网格,可编辑为cellEdit。在这个子网格中,我有一列是下拉列表。我想要做的是,如果列表的选定值是" LIBRE",则在网格中立即禁用两个其他单元格(仅在同一列中)。 我按照以下方式(在子网格定义部分中)执行:
afterEditCell:function(id, cellname, value, iRow, iCol){
var grid=jQuery("#" + subgrid_table_idHilos);
var ret = jQuery("#" + subgrid_table_idHilos).jqGrid('getRowData',id);
if(ret.nombreestadoe1=="LIBRE"){
grid.jqGrid('setCell',id,'conectadoe1','','not-editable-cell');
grid.jqGrid('setCell',id,'puertohiloe1','','not-editable-cell');
}
else if(ret.nombreestadoe1!="LIBRE"){
var iCol = getColumnIndexByName(grid,"conectadoe1"),
tr = grid[0].rows.namedItem(id),
td = tr.cells[iCol];
$(td).removeClass("not-editable-cell");
iCol = getColumnIndexByName(grid,"puertohiloe1"),
tr = grid[0].rows.namedItem(id),
td = tr.cells[iCol];
$(td).removeClass("not-editable-cell");
}}
事情是:它正在工作,但只有在不同单元格中单击两次之后才有效,而这是因为在更改所选值之后,ret.nombreestadoe1的内容为:
<select role="select" id="10_nombreestadoe1" name="nombreestadoe1"><option style="background-color: green;" value="1" role="option">LIBRE</option><option style="background-color: red;" value="2" role="option">OCUPADO</option><option style="background-color: purple;" value="3" role="option">ROTO</option><option style="background-color: grey;" value="0" role="option">SIN DEFINIR</option></select>
点击其他地方后,它可以正常工作,因为已经在列表中设置了正确的值。
我怎样才能得到它刚被选中的内容?
谢谢!
答案 0 :(得分:0)
我找到了该怎么做。首先,我在第一个列表所在列的dataevents中的'change'函数中执行此操作。这样我就可以立即获得所选值,我检查它,并根据值,我使用相同的代码禁用单元格。代码如下:
{name:"nombreestadoe1",stype:'select',searchoptions: {dataUrl:'json/estadosHilos.jsp',searchhidden:true},editable:true,edittype:'select',editoptions: {dataUrl:'json/estadosHilos.jsp',
dataEvents: [
{ type: 'change', fn: function(e) {
var grid=jQuery("#" + subgrid_table_idHilos);
var id=grid.jqGrid('getGridParam', 'selrow');
switch (e.currentTarget.selectedIndex){
case 0:
color="green";
grid.jqGrid('setCell',id,'conectadoe1','','not-editable-cell');
grid.jqGrid('setCell',id,'puertohiloe1','','not-editable-cell');
break;
case 1:
color="red";
break;
case 2:
color="purple";
break;
case 3:
color="grey";
break;
default:
color="white";
break;
}
if(color!="green"){
var iCol = getColumnIndexByName(grid,"conectadoe1"),
tr = grid[0].rows.namedItem(id),
td = tr.cells[iCol];
$(td).removeClass("not-editable-cell");
iCol = getColumnIndexByName(grid,"puertohiloe1"),
tr = grid[0].rows.namedItem(id),
td = tr.cells[iCol];
$(td).removeClass("not-editable-cell");
}
e.currentTarget.parentElement.style.backgroundColor=color;
}},
]},index:"nombreestadoe1",width:70,hidden:false
},