2014-11-24 4 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

Я нашел, что делать. Во-первых, я делаю это в функции «change» в dataevents столбца, где находится первый список. Таким образом, я получаю выбранное значение сразу, я проверяю его, и в зависимости от значения я отключу ячейку с тем же кодом. Здесь код:

{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 
      }, 
Смежные вопросы