Maison >développement back-end >C++ >Comment remplir correctement les listes déroulantes jqGrid à l'aide de jQuery $.post et ASP.NET MVC ?

Comment remplir correctement les listes déroulantes jqGrid à l'aide de jQuery $.post et ASP.NET MVC ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-11 07:38:45388parcourir

How to Correctly Populate jqGrid Dropdowns Using jQuery $.post and ASP.NET MVC?

Utiliser jQuery $.post et ASP.NET MVC pour remplir correctement les listes déroulantes jqGrid

Cet article aborde un problème courant lors du remplissage dynamique des listes déroulantes jqGrid à l'aide de la méthode $.post de jQuery et d'ASP.NET MVC : recevoir une valeur « non définie » en raison d'un formatage de données incorrect.

Le problème : Un format de données incorrect est envoyé au jqGrid, ce qui entraîne des valeurs déroulantes « non définies ». Le jqGrid attend un format spécifique (par exemple, value: "FE:FedEx; IN:InTime; TN:TNT"), mais la requête peut renvoyer des données dans un format différent.

La demande et la réponse originales : L'approche originale utilisait probablement $.post pour récupérer les données JSON. Cependant, la structure JSON ne correspondait pas aux attentes de jqGrid. La solution impliquait de supprimer les guillemets supplémentaires lors de la création de valeur et de modifier la réponse du contrôleur en ContentResult(sb.ToString()). C'est une méthode moins robuste.

Une solution plus robuste : tirer parti de dataUrl et buildSelect

Une approche supérieure utilise les fonctionnalités dataUrl et buildSelect de jqGrid pour un code plus propre et plus maintenable.

dataUrl : Cette propriété spécifie une URL qui renvoie les données dans un format plus simple, adapté à l'analyse. Le format n'a pas besoin d'être pré-formaté comme une chaîne de paires clé-valeur.

buildSelect : Cette fonction de rappel traite la réponse du serveur (idéalement JSON) et construit le code HTML déroulant correct. Cela sépare la récupération des données du formatage des données, améliorant ainsi l'organisation et la lisibilité du code.

Exemple de mise en œuvre :

Contrôleur (ASP.NET MVC) :

<code class="language-csharp">public JsonResult GetDestinationList() {
    List<string> allDestinations = GetAllDestinations();
    return Json(allDestinations, JsonRequestBehavior.AllowGet);
}</code>

Configuration jqGrid (JavaScript) :

<code class="language-javascript">{
    name: 'destinations',
    editable: true,
    edittype: 'select',
    editoptions: {
        dataUrl: '/YourController/GetDestinationList', // Replace with your controller action
        buildSelect: function(data) {
            var s = '';
            if (data.length) {
                for (var i = 0; i < data.length; i++) {
                    var ri = data[i]; // Assuming data is an array of strings
                    s += '<option value="' + ri + '">' + ri + '</option>';
                }
            }
            return s;
        }
    }
}</code>

Cette approche révisée fournit une solution plus efficace et plus maintenable pour remplir les listes déroulantes jqGrid. Le serveur renvoie des données simples et la fonction côté client buildSelect gère le formatage, ce qui permet une meilleure séparation des préoccupations. N'oubliez pas de remplacer /YourController/GetDestinationList par l'URL réelle de l'action de votre contrôleur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn