2015-12-08 1 views
0

Как я могу отключить доступ к определенным ячейкам? Кроме того, есть ли способ отключить щелчок по ячейкам в определенном столбце?Есть ли способ остановить onSelectCell, когда кнопка нажата или отключена, нажмите на определенные ячейки?

У меня есть кнопка, созданная через formatter, и ее начальное состояние отключено. Но когда нажата кнопка отключения (содержится в ячейке сетки), вызывается onSelectCell. Я не хочу, чтобы это произошло. Я хочу, чтобы кнопка действовала независимо от ячейки.

Я создал кнопку, в колонке под названием ActionIcons:

var qccolmodel = function() { 
     var colModel = [  
          {name:'Name',     index:'Name',   formatter:qcDetailsFormatterFunction.mn}, 
          {name:'ReelIndex',    index:'ReelIndex',  width:28, align:"center", formatter:qcDetailsFormatterFunction.ri}, 
          {name:'FileName',    index:'FileName',  width:120, align:"left", formatter:qcDetailsFormatterFunction.fn}, 
          {name:'MediaType',    index:'MediaType',  width:70, align:"center",formatter:qcDetailsFormatterFunction.mt}, 
          {name:'QCStatus',    index:'QCStatus',  width:35, align:"center", editable:true, edittype:'select', editoptions:{value:"OK:Ok;ND:NotDone;FD:Failed"},formatter:qcDetailsFormatterFunction.qs}, 
          {name:'QCComments',    index:'QCComments',  width:75, align:"center", editable:true, formatter:qcDetailsFormatterFunction.qcm}, 
          {name:'PackagingStatus',  index:'PackagingStatus',width:53, align:"center", editable:true, edittype:'select', editoptions:{value:"ADDED:Add To Package;NOT ADDED:Remove From Package"}, resizable:false, formatter:qcDetailsFormatterFunction.ps}, 
          //{name: 'ActionIcons',   index:'ActionIcons', fixed:true, sortable:false, resize:false, formatoptions:{keys:true,delbutton : false}, formatter:'actions'}, 
          {name: 'ActionIcons',   index:'ActionIcons', width:12, align:"center" , formatter:qcDetailsFormatterFunction.ai}, 
          {name:'JobID',     index:'JobID',   width:0, hidden:true, resizable:false, formatter:qcDetailsFormatterFunction.id} 

         ]; 
     return colModel; 
    }; 

    var qcDetailsFormatterFunction = new Object(); 

    function defineQCDetailsFormatterFunction() { 

     qcDetailsFormatterFunction.mn = function(val,colModelOB, rowdata) { 
      var innerHTML = '<span class="qc-movie-name" id="qc_' + val + '">' + val + '</span>'; 

      return innerHTML; 
     } 

     qcDetailsFormatterFunction.ri = function(val,colModelOB, rowdata) { 
      var innerHTML = "<span class='qc-reel-index'>" + val + "</span>"; 
      return innerHTML; 
     } 

     qcDetailsFormatterFunction.fn = function(val,colModelOB, rowdata) { 
      var innerHTML = "<span class='qc-filename'>" + val + "</span>"; 
      return innerHTML; 
     } 

     qcDetailsFormatterFunction.mt = function(val,colModelOB, rowdata) { 
      var innerHTML = "<span class='qc-media-type'>" + val + "</span>"; 
      return innerHTML; 
     } 

     qcDetailsFormatterFunction.ps = function(val,colModelOB, rowdata) { 
      if(!val || val == 'NOT ADDED') { 
       return 'Not Added'; 
      } else{ 
       return 'Added To Package'; 
      } 
     } 

     qcDetailsFormatterFunction.id = function(val,colModelOB, rowdata) { 
      var innerHTML = "<input id='qcid_" + val + "' type='radio' name='qc-jid' value='" + val + "' />"; 
      return innerHTML; 
     } 

     qcDetailsFormatterFunction.qs = function(val,colModelOB, rowdata) { 
      if(!val) { 
       return '<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>'; 
      } else{ 
       return val; 
      } 
     } 

     qcDetailsFormatterFunction.qcm = function(val,colModelOB, rowdata) { 
      if(!val.trim()) { 
       return '<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>'; 
      } else{ 
       return val; 
      } 
     } 

     qcDetailsFormatterFunction.ai = function(val,colModelOB, rowdata) { 
      var innerHTML = '<button class="btn btn-default btn-sm save-cell" disabled data-placement="left" title="save cell">' + 
           '<span class="glyphicon glyphicon-floppy-save" aria-hidden="true"></span>' + 
          '</button>'; 
      return innerHTML; 
     } 


     qcDetailsFormatterFunction.gridComplete = function(){ 
      var Table   = $(this); 
      GRID_UNIQUE_ID = QC_GRID_UNIQUE_ID; 
      if(ResizeQC == 0){ 
       CommonGridCompleteFunctions(Table); 
       addQCDetailsPagerIcons(); 
       edRefreshTimerID = setGridRefreshTimer(QC_GRID_UNIQUE_ID); 

       $('.save-cell').click(function(event) { 
        event.preventDefault(); 
        event.stopPropagation(); 
        if(ciRow && ciCol) { 
         $('#QCStatus').saveCell(ciRow,ciCol); 
        }  
        $('#QCStatus').removeClass('edit-grid-state'); 
        if(edRefreshTimerID == -1) { 
         edRefreshTimerID = setGridRefreshTimer('QCStatus'); 
        } 
       }); 
       ResizeQC++; 
      } 
      worksOnAllGridComplete(Table); 
      //$('.save-cell').tooltip(); 
     }; 

    } 

    defineQCDetailsFormatterFunction(); 

    function addQCDetailsPagerIcons() { 
     $('#QCStatus').navGrid('#gridpager_QCStatus', 
       {refresh:true,refreshicon:'ui-icon-refresh',refreshtitle:'Refresh', 
       position:'left', 
       search:false, 
       add:false, 
       del:false, 
       edit:false 
       }) 
      .navButtonAdd('#gridpager_QCStatus', { 
       caption: '', 
       title: 'Save Cell', 
       buttonicon: 'ui-icon-disk', 
       onClickButton: function(event) { 
        $('#QCStatus').saveCell(ciRow,ciCol); /* ciRow and ciCol are set in createjqgrid.js */ 
        $('#QCStatus').removeClass('edit-grid-state'); 
        if(edRefreshTimerID == -1) { 
         edRefreshTimerID = setGridRefreshTimer('QCStatus'); 
        } 
       }, 
       position:"last" 
      }); 
    } 
+1

Ваш код не содержит обратного вызова 'onCellSelect'. Почему это проблема? Вы можете использовать 'beforeSelectRow' для предотвращения выбора или. Этого должно быть достаточно, чтобы вернуть 'false' из' $ ('. Save-cell'). Нажмите ', чтобы предотвратить распространение событий. Кроме того, было бы полезно, если бы вы опубликовали демонстрацию JSFiddle, которая воспроизводит проблему, и если вы удалите ненужные части из вашего кода. Нужно прокручивать код навсегда, чтобы прочитать его. Вы удаляете, например, все свойства 'index' из' colModel', которые абсолютно не нужны и просто скрывают информацию, которая может быть действительно интересной. – Oleg

ответ

1

Но когда кнопка отключена нажата (содержится в виде сетки-ячейки), onSelectCell называется

Как динамическая кнопка получает, поэтому вам необходимо делегировать событие ближайшему статическому родителю, в вашем случае это table:

$('#QCStatus').on('click', 'button:disabled', function(e){ 
    return false; // does -> both -> e.preventDefault(); e.stopPropagation(); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^