Je dois permuter entre les actions basées sur une condition donnée dans une grille jqGrid 4.4.1. Jetez un oeil à l'image suivante:Actions conditionnelles entre les lignes en fonction d'une condition donnée dans jQgrid?
Comment ça devrait fonctionner est:
- si le type est
api_response
alors leactions
ne devrait être que l'icône de loupe. - si Type est
api_request
alors leactions
devrait être la deuxième icône mais la loupe ne devrait pas être là.
Voilà comment je suis en train de créer les boutons:
$.fn.fmatter.btnFormatter = function (cellValue, options, rowData, addOrEdit) {
return '<a href="#">' +
'<img class="api_button" data-id="' + options.rowId + '" src="/images/icons/16x16/document_view.png" alt="Show API Response Data" title="Show API Response Data" />' +
'</a>' +
'<a href="/sf/api-logs/error/' + options.rowId + '">' +
'<img class="error_button" data-id="' + options.rowId + '" src="/images/icons/16x16/document_warning.png" alt="Show Errors" title="Show Errors" />' +
'</a>';
};
$(function() {
$("#grid").jqGrid({
url: '/api-logs',
datatype: "json",
colNames: $('#colnames').data('values'),
colModel: $('#colmodel').data('values'),
width: 980,
height: 300,
pager: "#gridpager",
toppager: true,
hoverrows: true,
shrinkToFit: true,
autowidth: true,
rownumbers: true,
viewrecords: true,
rowList: [10, 20, 50, 100],
data: [],
rownumWidth: 50,
gridview: true,
sortable: true,
rowattr: function (item) {
if (item.type === "api_response") {
return {"class": "api_response"};
} else if (item.type === 'api_request') {
return {"class": "api_request"};
}
},
jsonReader: {
root: 'rows',
page: 'page',
total: 'total',
records: 'records',
cell: '',
repeatitems: false
}
});
});
Bien sûr, la première colonne a la btnFormatter
appliquée.
Comment puis-je faire cela?
Comment créer une icône de loupe? Vous devriez publier du code JavaScript, que vous utilisez. L'ancien jqGrid 4.4.1 n'a pas la possibilité de créer un bouton d'action personnalisé. De plus, jqGrid 4.4.1 a presque 5 ans. C'est la version morte, qui n'est pas supportée depuis des années. – Oleg
[Free jqGrid] (https://github.com/free-jqgrid/jqGrid) (la version actuelle est 4.14.1) prend en charge les boutons personnalisés, qui peuvent être affichés conditionnellement en fonction des données d'entrée. Il faut définir le callback 'actionsNavOptions.isDisplayButtons'. Voir [la démo] (http://www.ok-soft-gmbh.com/jqGrid/OK/CustomActionButton1.htm) créé pour [la réponse] (https://stackoverflow.com/a/29735149/315935) pour plus de détails. – Oleg
@Oleg J'ai ajouté le code à l'OP mais je ne peux pas mettre à jour la bibliothèque maintenant parce qu'il y a tout un système qui fonctionne sur cette version et je ne sais pas comment se comportera la BC. – ReynierPM