根据另一个单元格中的值禁用单元格(jqgrid)

时间:2014-11-24 12:21:32

标签: drop-down-menu jqgrid

我有一个带子网格的网格,可编辑为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>

点击其他地方后,它可以正常工作,因为已经在列表中设置了正确的值。

我怎样才能得到它刚被选中的内容?

谢谢!

1 个答案:

答案 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
            },