У меня есть три раскрывающихся коробки на мой взгляд, с кодомКак фильтровать выпадающие ящики на основе MVC
@Html.DropDownList("EventGroupTitle", ViewData["groupList"] as List<SelectListItem>, new { @class = "form-control" })
@Html.DropDownList("EventGroupName", ViewData["groupNameList"] as List<SelectListItem>, new { @class = "form-control" })
@Html.DropDownList("EventTypeOne", ViewData["typeList"] as List<SelectListItem>, new { @class = "form-control" })
И мой контроллер метод GET действий является
public ActionResult Create()
{
List<SelectListItem> liEventGroups = new List<SelectListItem>();
List<SelectListItem> liEventTypes = new List<SelectListItem>();
List<SelectListItem> liEventGroupNames = new List<SelectListItem>();
// pull results from DB and assign them to the above variables
ViewData["typeList"] = liEventTypes;
ViewData["groupList"] = liEventGroups;
ViewData["groupNameList"] = liEventGroupNames;
return View();
}
В базе данных есть один -to-many между EventGroupTitle
и EventGroupNames
. В качестве примера название группы может быть Doctor
, а имена групп будут Dr Joe
, Dr Adrian
. Другим названием группы будет Nurse
, и поэтому имена групп будут Nurse Daniel
, Nurse Dave
.
Нет фактической настройки внешнего ключа, однако есть поле в GroupNames
, которое говорит, что такое title
.
Итак, есть ли способ сделать какую-то фильтрацию на Dropbox? Если они выбирают Doctor
в первом Dropbox, то я хочу, чтобы во втором Dropbox появлялись только врачи.
Для обработки событий на стороне клиента вам нужен javascript/jquery. Найдите каскадные каскадные кадры MVC или посмотрите на это [DotNetFiddle] (https://dotnetfiddle.net/JofdB8) для примера –
Есть ли другая функция, чем 'append'. Когда страница загружается, все возможные варианты присутствуют в dropdownbox 2. Когда они меняют что-то в dropdownbox 1, ваш код работает так, как ожидалось, но добавляет его ко второму полю. Есть ли способ переписать весь dropdownbox? – masfenix
Посмотрите на пример - вам нужен ajax, чтобы вызвать метод сервера, чтобы заполнить второй раскрывающийся список на основе значения первого (выпадающее меню secons должно изначально быть пустым). Или, если вы хотите сначала загрузить все параметры всех параметров для второго раскрывающегося списка и сделать это без ajax, посмотрите последнюю опцию в [этот ответ] (http://stackoverflow.com/questions/28627421/better-way-to- load-2-dropdown-in-mvc/28640420 # 28640420) –