Est-il possible de désactiver la modification dans jqGrid pour certaines cellules d'une colonne marquée comme modifiable? D'après ce que j'ai vu, les seules options sont "toutes les cellules sont modifiables" ou "aucune cellule n'est modifiable". Existe-t-il un moyen de contourner ce problème?jqGrid - éditer uniquement certaines lignes pour une colonne modifiable
Répondre
Je vous recommande d'utiliser ce que l'on appelle "Inline Editing" pour l'édition de lignes. Le plus d'avantage de cette méthode, qu'elle est très intuitive et l'utilisateur. Vous pouvez voir comment cela fonctionne sur la page de démonstration http://trirand.com/blog/jqgrid/jqgrid.html. Choisissez sur cette démo "Row Editing" puis "Using Events" ou "Types d'entrée" sur la partie de l'arbre de gauche. Avec cette méthode, vous pouvez implémenter toute vérification personnalisée pour savoir si la ligne sélectionnée doit être modifiée ou non à l'intérieur du gestionnaire d'événements onSelectRow
ou ondblClickRow
. Si vous autorisez l'édition, vous appelez la méthode editRow
de jqGrid. Cette méthode crée des contrôles d'entrée pour toutes les colonnes modifiables et l'utilisateur peut modifier les valeurs de ligne de manière naturelle. Les modifications seront sauvegardées si l'utilisateur appuie sur la touche "enter" ou annulée sur la touche "esc".
Je préfère personnellement implémenter l'appel de la méthode editRow
à l'intérieur du gestionnaire d'événements ondblClickRow
. Ainsi, l'utilisateur peut continuer à sélectionner des lignes comme d'habitude et peut utiliser un double clic pour l'édition de ligne. Le pseudo code ressemblera à ceci:
var lastSel = -1;
var isRowEditable = function (id) {
// implement your criteria here
return true;
};
var grid = jQuery('#list').jqGrid({
// ...
ondblClickRow: function(id, ri, ci) {
if (isRowEditable(id)) {
// edit the row and save it on press "enter" key
grid.jqGrid('editRow',id,true);
}
},
onSelectRow: function(id) {
if (id && id !== lastSel) {
// cancel editing of the previous selected row if it was in editing state.
// jqGrid hold intern savedRow array inside of jqGrid object,
// so it is safe to call restoreRow method with any id parameter
// if jqGrid not in editing state
grid.jqGrid('restoreRow',lastSel);
lastSel = id;
}
},
pager: '#pager'
}).jqGrid('navGrid','#pager',{edit:false});
Vous pouvez le faire logiquement. Vous devez avoir des critères pour les cellules que certaines cellules peuvent être modifiables et d'autres non.
Je l'ai implémenté en ligne.
Lorsque vous créez du code XML pour jqgrid, attribuez un identifiant à chaque ligne.
En fonction de ces identifiants, vous pouvez rendre les cellules de ces lignes modifiables ou non modifiables à l'aide des méthodes jqgrid.
ci-dessous est la méthode beforeEditCell:
beforeEditCell: function(rowid, cellname, value, iRow, iCol) {
// here identify row based on rowid
// if the row should not be editable than simply make the cells noneditable using
editCell(iRow, iCol, false);
jQuery(gridid).jqGrid("restoreCell",iRow,iCol);
}
Vous pouvez continuer à vous mettre en œuvre.
J'espère que ma suggestion vous aiderait. :)
- 1. jQuery tablesorter trier uniquement certaines lignes/colonnes
- 2. jqGrid avec une colonne de case à cocher modifiable
- 3. jqgrid, aide à ajouter, éditer et supprimer des lignes
- 4. Édition de cellules jqGrid - Double-cliquez pour éditer?
- 5. Rendre uniquement certaines colonnes modifiables dans SlickGrid
- 6. jqGrid ajouter une nouvelle colonne
- 7. jqGrid celledit sous certaines conditions
- 8. requête SQL à renvoie uniquement certaines lignes en fonction de la valeur de la colonne
- 9. Comment éditer un jqgrid à partir de javascript
- 10. Interrogation pour lignes consécutives avec certaines caractéristiques
- 11. jqGrid avec colonne Reordering
- 12. Masquer colonne (en-tête et lignes) post jqGrid render
- 13. Édition jqGrid UNIQUEMENT en mode formulaire
- 14. Puis-je avoir une colonne calculée modifiable?
- 15. JQGrid Colonne auto largeur
- 16. jqGrid - Comment calculer la colonne en jqgrid?
- 17. jqGrid: colonne éditable qui montre toujours une sélection
- 18. Colonne WordWrap dans JQGrid
- 19. Comment afficher différentes valeurs dans une colonne jqGrid
- 20. Comment conserver une transaction en cas d'échec pour certaines lignes?
- 21. SQL: Comment sélectionner uniquement les lignes avec une valeur unique sur certaines colonnes?
- 22. jqGrid utilisant des boutons radio pour les lignes modifiables
- 23. Comment faire pour afficher une cellule de case à cocher uniquement sur certaines lignes d'entités dans une vue hiérarchique?
- 24. rendant certaines cellules d'un ExtJS GridPanel non modifiable
- 25. Supprimer jqGrid lignes côté client uniquement et l'envoi de lignes supprimées à ASP.NET MVC sur le formulaire POST
- 26. Powerbuilder: Rendre certaines lignes modifiables et certaines lignes non modifiables dans une fenêtre de données
- 27. colonne de format jqGrid dynamiquement
- 28. Comment cacher une colonne jqGrid de nom de variable?
- 29. jqGrid Valeur et texte Colonne
- 30. jqGrid onselectrow
Merci pour votre contribution détaillée. Cela ressemble à une solution raisonnable. –
@Oleg: ceci permet toujours l'édition en ligne et en forme de ligne. Comment empêcher en ligne et former l'édition de rangée désactivée aussi? – Andrus