无法使用Select2以编程方式选择选项

我有一个Select2工作正常附加到选择列表,但当有人输入一个新项目,我重新绑定选择列表,并尝试以编程方式选择新项目,它拒绝显示。
还有很多其他post,但他们的解决方案对我不起作用。

  1. 使用.select2("val", value) 。 什么也没做。
  2. 使用.select2("data", value) 。 什么也没做。 不确定这应该是多么不同。
  3. 使用InitSelection选项设置值。 这会导致以下错误消息: Uncaught Error: Option 'initSelection' is not allowed for Select2 when attached to a select element

在向数据库添加新选项后的Ajax成功函数中,我有以下Javascript:

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

所以在这个最新的迭代中,我试图根据另一个建议的解决方案提供一个带有选择列表项中的id和text的数组,但仍然没有发生。 我究竟做错了什么? 将Select2与选择列表一起使用时,这是不可能的?

编辑 :我在MVC中有以下行创建选择列表:

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

这必须通过从模型中绑定到DishID来引起问题,该模型在来自服务器时最初是空白的。 DropDownGroupListFor只是一个HTML助手,它允许在Select中使用OptionGroups,但它必须是一个有问题的绑定。 这里最好的方法是什么,以不同的方式绑定或以某种方式更新模型的DishID,不确定最佳实践?

 var $example = $(".js-example-programmatic").select2(); $example.val("CA").trigger("change"); 

在添加/修改项目之前,您需要销毁select2。 如果你这样做,那么你的select2将像第一次绑定一样响应

Select2下拉列表动态添加,删除和刷新项目