2010-06-07 5 views
2

Y at-il une façon jqGrid d'avoir une colonne modifiable qui utilise une sélection comme dans cet exemple colModel:jqGrid: colonne éditable qui montre toujours une sélection

{ 
name: 'Options', 
index: 'Options', 
width: 150, 
align: 'left', 
resizable: false, 
editable: true, 
edittype: 'select', 
editoptions: { 
    value: function() { return buildSelect(); } 
}, 
formatter: 'select' 
} 

mais montre toujours la sélection?

Je l'ai déjà travaillé avec des cases à cocher, mais il ne semble pas y avoir moyen de le faire avec des sélections. Idéalement, j'aimerais que cela fonctionne en mode celledit. Des idées?

Répondre

4

Tout est possible. Je ne suis pas sûr, que ce que vous voulez est le meilleur moyen. Dans la plupart des cas, je recommande d'utiliser un moyen standard, alors votre vie sera plus facile, surtout après le passage à une nouvelle version du contrôle que vous utilisez.

Néanmoins, vous pouvez utiliser un formateur personnalisé (voir http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_formatter) au lieu de formatter: 'select' pour afficher le contenu d'une colonne comme vous préférez. Par exemple,

{ name: 'Options', width: 150, align: 'left', editable: true, edittype: 'select', 
    editoptions: { 
    value: function() { return buildSelect(); } 
    }, 
    formatter: function (cellvalue, options, rowObject, action) { 
    if (cellvalue === 'Yes') { 
     return '<select><option value="1" selected="selected">Yes</option>' + 
        '<option value="0">No</option></select>'; 
    } else { 
     return '<select><option value="1">Yes</option>' + 
        '<option value="0" selected="selected">No</option></select>'; 
    } 
    } 
} 

peut être utilisé pour afficher select avec « Oui » et « Non » au lieu de valeurs par défaut une valeur actuelle (« Oui » ou « Non »). Vous pouvez également lier une fonction pour un handle change de tels éléments select.

+0

Des trucs géniaux. Spot sur. Dois-je encore rendre la cellule modifiable (et utiliser editoptions) ou la grille stockera-t-elle la valeur sélectionnée dans la liste déroulante créée dans le formateur personnalisé? – Nigel

+0

Le formateur personnalisé n'affiche que les données. Pour pouvoir modifier les données et enregistrer la valeur modifiée sur le serveur, vous devez utiliser n'importe quel mode d'édition (édition de cellule/modification en ligne ou édition de formulaire) voir http://www.trirand.com/jqgridwiki/doku.php?id= wiki: jqgriddocs # édition. – Oleg

Questions connexes