jqgrid edittype sélectionner la valeur de la charge à partir des données

Je suis en utilisant jqgrid dans mon nouveau projet.
Dans un cas précis, j'ai besoin d'utiliser un élément select dans la grille. Pas de problème.

- Je définir le colModel et de la colonne, par exemple comme (à partir de wiki)

colModel : [
  ...
{name:'myname', edittype:'select', editoptions:{value:{1:'One',2:'Two'}} },
  ...
]

Mais maintenant, quand je charge mes données, je préfère la colonne "monnom" pour contenir la valeur 1.
Cela ne fonctionne pas pour moi au lieu de cela, il doit contenir la valeur "Un".

Le problème, c'est que le texte partie de la sélection de l'élément est dans mon cas, localisée dans la couche où la colModel est généré dynamiquement. Aussi le type de données de l'entité qui génère les données via EF 4 ne peut pas être une chaîne de caractères. Ensuite, je dois trouver le bon texte localisé et de manipuler les données de résultat de façon à ce que la colonne "monnom" n'est pas de l'information un entier qui est généralement le cas, mais une chaîne de caractères au lieu de cela, avec le texte localisé.

Il n'existe aucune option, vous pouvez utiliser de sorte que lorsque les données contiennent la valeur qui correspond à une option dans la liste de sélection, puis la grille constate que l'option et présente le texte.
Maintenant, la grille présente la valeur comme un texte et d'abord, quand je clique sur modifier, il trouve l'option correspondante et présente le texte. Quand je l'annuler, la modifier, il revient à présent de nouveau la valeur.

J'ai commencé à penser à une solution et c'est ce que je suis venu avec. S'il vous plaît si vous connaissez une meilleure solution ou si vous savez qu'il y est un construit dans l'option n'hésitez pas à répondre.
Sinon voici ce que j'ai fait:

loadComplete: function (data) {
                    var colModel = grid.getGridParam('colModel');
                    $.each(colModel, function (index, col) {
                        if (col.edittype === 'select') {
                            $.each(grid.getDataIDs(), function (index, id) {
                                var row = grid.getRowData(id);
                                var value = row[col.name];
                                var editoptions = col.editoptions.value;
                                var startText = editoptions.indexOf(value + ':') + (value + ':').length;
                                var endText = editoptions.indexOf(';', startText);
                                if (endText === -1) { endText = editoptions.length; }
                                var text = editoptions.substring(startText, endText);
                                row[col.name] = text;
                                grid.setRowData(id, row);
                            });
                        }
                    });
                }

Il fonctionne et je vais le laisser comme ça si personne ne vient avec une meilleure manière.

OriginalL'auteur John | 2011-04-03