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

时间:2014-08-04 22:50:29

标签: javascript jquery asp.net-mvc jquery-select2

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

  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
  4. 在向数据库添加新选项后的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,不确定最佳实践?

2 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:0)

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

Select2 Dropdown Dynamically Add, Remove and Refresh Items from