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
Libérer: 2025-01-11 07:38:45
original
451 Les gens l'ont consulté

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) :

public JsonResult GetDestinationList() {
    List<string> allDestinations = GetAllDestinations();
    return Json(allDestinations, JsonRequestBehavior.AllowGet);
}
Copier après la connexion

Configuration jqGrid (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;
        }
    }
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal