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