0

我目前有一个功能强大的小部件,它接受多个选项。该小部件位于带有“保存”按钮和其他按钮的弹出窗口内。当我单击“保存”时,弹出窗口关闭,将选择保存到数据库中,自动运行数据库中的查询,并在 DataView 中显示结果。

现在,当我再次打开弹出窗口时,Select2 小部件中的文本字段为空。我希望它获取数据库中的数据并在打开时将它们显示在小部件中。我已经对其进行了设置,以便它返回一个应该是 ID 的字符串数组(这就是小部件检索正确数据所需的全部内容)。

所以我的问题是:如何修改小部件,以便它可以接收一个数组并在创建小部件时将它们显示为已选择的选项?

我实际上不太确定在这种情况下显示我的代码会做什么,但以防万一,它们是:

$("#select2").select2({
  placeholder: "Select materials...",
  closeOnSelect: false,
  ajax: {
    url: this.targetUrl,
    delay: 200,
    dataType: 'json',
    data: function(params) {
      return {
        code: params.term ? params.term + "*" : "*",
        page: params.page || 1
      };
    },
    processResults: function(data, params) {
      params.page = params.page || 1;
      var results = [];
      for (var i = 0; i < (data.length >= 25 ? 25 : data.length); i++) {
        results.push({
          id: data[i].code,
          text: data[i].code
        });
      }
      return {
        itemCode: results,
        results: results,
        pagination: false
      };
    },
    cache: true
  },
  maximumSelectionLength: 5,
  escapeMarkup: function(markup) {
    return markup;
  }
});
4

1 回答 1

0

Select2 将在使用组件执行不同操作时触发一些不同的事件,允许您添加自定义挂钩并执行操作。such as: "change" event, Triggered whenever an option is selected or removed.

所以你可以使用

$("#select2").val($selected).trigger("change");

在您的问题中的代码之后以编程方式控制您的 select2。

$selected 以上是您从服务器端请求的数据。它应该是一个数组,例如 ["12", "23", "34"]。

希望能帮到你。

参考选择2

于 2016-09-11T09:41:53.143 回答