2015-09-30 40 views
2

我有2个bootstrap-multiselect框。我想通过Ajax调用基于另一个中的选择来刷新其中的项目。bootstrap-multiselect重建/刷新不起作用

除了多重选择用于显示选项的所有工作都没有被“重建”或“刷新”填充。

代码:

Decalring多选”

 $('#Groups').multiselect({ 
     onChange: function (option, checked) { 
      //get all of the selected tiems 
      var values = $('#Groups option:selected'); 
      var selected = ""; 
      $(values).each(function (index, value) { 
       selected += $(value).prop('value') + ","; 
      }); 
      selected = selected.substring(0, selected.length - 1); 
      //update hidden field with comma delimited string for state persistance 
      $("#Hidden_Groups").val(selected); 
     }, 
     includeSelectAllOption: true 
    }); 

更新选项列表:

$('#JobCodes').multiselect({ 
     onDropdownHide: function(event) { 
      console.log("start"); 
      var option = $("#Groups"); 
      //clear out old consolidations 
      option.empty(); 
      console.log("emptied"); 

      ////get consolidation and append to select options list 
      $.getJSON("/Reports/GetGroups/", { options: $("#Hidden_JobCodes").val() }, function (result) { 
       $.each(result, function (index, item) { 
        console.log(item.text); 
        option.append($("<option />").val(item.id).text(item.text)); 
       }); 
      }); 

      option.multiselect('destroy'); 
      option.multiselect('rebuild'); 
      option.multiselect('refresh'); 
     }, 

都离开了破坏,重建并刷新就像一个例子的事情我已经尝试。已经在每一个订单和组合中使用了所有这些,没有运气。

Destroy会将我的多重选择“改回”为标准选择,但无论我做了什么,我都无法让多重选择返回新的选项列表,包括使用带有onchange事件的完整多选呼叫。它没有旧的清单。当我进行刷新/重建呼叫时,选择列表具有正确的选项。

在此先感谢。 T

回答

0

完全是我的错!

对/ destroy/refresh/rebuild的调用不在ajax调用中。所以在我的新列表被返回之前正在执行,因此当时没有要重建的列表。

解决方案:

////get consolidation and append to select options list 
      $.getJSON("/Reports/GetGroups/", { options: $("#Hidden_JobCodes").val() }, function (result) { 
       $.each(result, function (index, item) { 
        console.log(item.text); 
        option.append($("<option />").val(item.id).text(item.text)); 
       }); 
       option.multiselect('rebuild') 
      });