Lorsque vous utilisez jqGrid pour remplir dynamiquement le menu déroulant pour l'édition des données, des éléments supplémentaires « non définis » apparaîtront dans le menu déroulant. Ce problème provient du format de chaîne utilisé pour renseigner les valeurs du menu déroulant.
jqGrid requiert que le format de valeur du menu déroulant soit le suivant :
<code>value: "FE:FedEx; IN:InTime; TN:TNT"</code>
Cependant, le code de l'action ASP.NET MVC génère la chaîne à l'aide de sb.ToString(), ce qui ajoute des guillemets inutiles autour de la valeur :
<code>value: ""ID: One;ID: Two;ID: Three;ID: Four;ID: Five;""</code>
Méthode 1 : Utiliser dataUrl
Afin de résoudre ce problème, il est recommandé d'utiliser l'attribut dataUrl de editoptions ou searchoptions dans jqGrid. Cela vous permet de spécifier une URL qui renvoie les résultats au format souhaité :
<code>{ name: 'destinations', ditable: true, edittype:'select', editoptions: { dataUrl:'<%= Url.Action("GetDestinationList","Home") %>' } }</code>
Dans le contrôleur, l'opération GetDestinationList doit renvoyer un tableau JSON contenant les valeurs du menu déroulant :
<code>public JsonResult GetDestinationList() { List<string> allDestinations = GetAllDestinations(); Json(allDestinations, JsonRequestBehavior.AllowGet); }</code>
Méthode 2 : Utiliser la fonction buildSelect
Si dataUrl n'est pas disponible, vous pouvez utiliser la fonction buildSelect pour formater la valeur du menu déroulant :
<code class="language-javascript"> buildSelect: function(data) { var s = ''; if (response && response.length) { for (var i = 0, l=response.length; i<l ; i++) { var ri = response[i]; s += ''+ri+''; } } return s + ""; }</code>
Cette fonction reçoit les données de réponse du serveur et renvoie une chaîne au format requis.
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!