2014-11-24 130 views
0

我有一个带有子网格的网格,可编辑为cellEdit。在这个子网格中,我有一列是一个下拉列表。如果列表的选定值为“LIBRE”,我想要做的是立即禁用网格中的其他两个单元格(仅在同一列中)。 我做如下(次网格定义部分):根据另一个单元格中的值禁用单元格(jqgrid)

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

我发现该怎么做。首先,我在第一个列表所在列的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 
      }, 
相关问题