2015-09-30 42 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') 
      });