Ne peut pas par programme, sélectionnez l'option à l'aide de Select2

J'ai un Select2 fonctionne bien attaché à une liste de sélection, mais quand quelqu'un entre dans un nouveau poste et je relier la liste de sélection et d'essayer de programmation pour sélectionner l'élément nouveau, il refuse de s'afficher.
Il y a un certain nombre d'autres postes de re cela, mais leurs solutions ne fonctionnent pas pour moi.

  1. Utilisation .select2("val", value). Ne fait rien.
  2. Utilisation .select2("data", value). Ne fait rien. Vous ne savez pas comment c'est censé être différent.
  3. Utiliser le InitSelection option pour définir une valeur. Cela conduit à la message d'erreur suivant: Uncaught Error: Option 'initSelection' is not allowed for Select2 when attached to a select element.

Dans l'Ajax succès fonction après l'ajout de la nouvelle option de la base de données, j'ai le code Javascript suivant:

BindDishes(RestaurantID); //rebinds the select list successfully
$('#hidDishID').val = data.DishID; //populates a hidden field
var arr = '[{id: "' + data.DishID + '", text: "' + data.DishName + '"}]'; 
$("#dd").select2("data", arr);

Donc, dans cette dernière version, j'ai essayé de fournir un tableau avec l'id et le texte à partir de la liste de sélection de l'élément par un autre solution suggérée, mais toujours rien ne se produit. Ce que je fais mal? Est-ce impossible lors de l'utilisation de Select2 avec une liste de sélection?

Modifier: j'ai la ligne suivante dans MVC qui crée la liste de sélection:

@Html.DropDownGroupListFor(m => m.DishID, Model.GroupedSelectList, "Select a dish", new { id="dd",style="width:470px;" })

qui doit être la cause du problème en se liant à DishID à partir du modèle qui a été initialement vide quand il est venu à partir du serveur. DropDownGroupListFor est juste un helper HTML qui permet l'utilisation de OptionGroups dans un Select, mais, il doit être la liaison qui est un problème. Quelle est la meilleure approche ici, de se lier d'une autre manière ou à quelque sorte de mise à jour du modèle DishID, pas sûr de la meilleure pratique?

.select2("val", value) fonctionne pour moi. Pourriez-vous fournir une quantité minimale complète reprodution?
Ont ajouté un edit pour mettre en évidence ce que le problème doit être - si .sélectionnez("val", valeur) fait le job, alors elle doit être remplacée par la liaison décrite, tout simplement pas sûr de la meilleure approche générale
$('#hidDishID').val = data.DishID; Cela semble mauvais. Pourriez-vous essayer chaning à $('#hidDishID').val(data.DishID); s'il vous plaît?
Merci de Jetons, qui ne remplir correctement le champ caché maintenant, c'est pas juste quelque chose qui aura un impact sur la principale question que ce domaine n'est pas encore utilisé
Select2 a lieu uniquement sur le client. @Html.DropDownGroupListFor() a lieu uniquement sur le serveur. Ils ne font pas la liaison, au moins pas dans le même contexte. Ils ne devraient pas être en mesure d'interagir. C'est purement un moyen de communication. Select2 est invoqué qu'après le traitement côté serveur est complètement terminé.

OriginalL'auteur user3775501 | 2014-08-04