我有一个ASP.NET MVC程序,它包含两个下拉列表,Country和Locations。 两者都是从存储在ViewBag中的SelectLists填充的。
我想要做的是在第一个下拉列表中选择该国家/地区时按组(国家/地区)过滤位置。 (通过告诉程序隐藏该组中没有的选项,或以某种方式自动填充选定的搜索栏中的组?)
我尝试了各种解决方案,但无法让它发挥作用。
这是我尝试在线的其他潜在解决方案:
$("#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 :(得分: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");
});