2017-05-22 214 views
0

我有一個ASP.NET MVC程序,其中包含兩個下拉列表,國家和地點。 兩者都從存儲在ViewBag中的SelectLists填充。過濾器選擇下拉選擇下拉(使用JQuery)

我想要做的是在第一個下拉列表中選擇該國家時按組(國家)過濾位置。 (或者通過告訴程序隱藏不在該組中的選項,或者以某種方式自動填充選定的搜索欄與組?)

我已經嘗試過各種解決方案,但不能完全得到它工作。

這是我基於了另一個潛在的解決方案在網上的嘗試:

 $("#Countries").on('change', function (evt, params) { 
      var selected = params.selected; 

      //var optGroup = $('optgroup[label="' + selected + '"]')[0].outerHTML; 
      var optGroup = $('optgroup[label="' + selected + '"]').html(); 
      $("#Locations").html(optGroup); 
      $("#Locations").trigger("chosen:updated"); 

     }); 

任何幫助,將不勝感激。
謝謝。

編輯
我已經得到了這個解決方案的工作,但它取代了位置列表,所以我不能過濾第二次。

EDIT2
這些都是來自控制器的兩條線將數據存儲到ViewBag:

ViewBag.Countries = new MultiSelectList(db.tblCountries, "CountryID", "CountryName"); 
ViewBag.Locations = new MultiSelectList(db.tblLocations, "LocationID", "LocationName", "tblCountry.CountryName"); 

如果您知道任何替代方法來解決這個問題,請後下。
感謝

回答

0

只是一句你再次綁定在html之前:

$("#Countries").on('change', function (evt, params) { 
     var selected = params.selected; 

     //var optGroup = $('optgroup[label="' + selected + '"]')[0].outerHTML; 
     var optGroup = $('optgroup[label="' + selected + '"]').html(); 
     $("#Locations").empty(); 
     $("#Locations").html(optGroup); 
     $("#Locations").trigger("chosen:updated"); 

    }); 
+0

這沒有奏效。它只是清空了位置列表,並且在我選擇另一個國家時不重新填充。我可能是因爲列表最初使用ViewBag綁定。 – AmateurDev

+0

我現在得到您的要求。對,因爲一旦你更新了html,你就無法獲取數據來綁定位置。除非你將它保存在某個地方。 – User3250

+0

您可以發佈您用於綁定位置下拉列表的屬性嗎? – User3250