2014-11-24 144 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 
      }, 
相關問題