Как привязать выпадающий список с флажком к другому выбору выпадающего списка
Я пытаюсь привязать checkboxlist к выбору dropdownlist, я смог отобразить список в выпадающем списке multiselect при изменении выбранного индекса Lab, но добавление флажка в выпадающий список multiselect-это то, что я не смог сделать. Любая помощь будет оценена по достоинству.
Что я уже пробовал:
Моя Функция Ajax:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script type="text/jscript"> $(document).ready(function () { $('#LabId').change(function () { $(".spina").show(); $("#testType").prop("disabled", true); $.getJSON('/Lab/GetTestTypeList/' + $('#LabId').val(), function (data) { var items = '<option value = "0">---Select a Test Type---</option>'; $.each(data, function (i, testType) { items += "<option value='" + testType.Value + "'>" + testType.Text + "</option>"; $("#testType").prop("disabled", false); $(".spina").hide(); }); $('#testType').html(items); $("#testType").prop("disabled", false); $(".spina").hide(); }); }); }); </script>
Мои HTML-элементы управления:
<div class="col-sm-7"> <div class="form-group"> @Html.LabelFor(model => model.LabId, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownListFor(model => model.LabId, (IEnumerable<SelectListItem>)ViewBag.LabList, "---Select Lab---", new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.LabId, "", new { @class = "text-danger" }) </div> </div> </div> <div class="col-sm-7"> <div class="form-group"> @Html.LabelFor(model => model.TestTypeId, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> <select id="testType" name="testType" multiple="multiple" class="form-control" required="required"> <option value="0">---Select a Test Type---</option> </select> @Html.ValidationMessageFor(model => model.TestTypeId, "", new { @class = "text-danger" }) </div> </div> </div>
Мой Код C# :
private void LoadLabDropDownList() { try { var getList = repository.GetSpecialtyListByRoleId(8); var items = getList.Select(t => new SelectListItem { Text = t.FullName, Value = t.UserId.ToString() }).ToList(); ViewBag.AccountantList = items; } catch (Exception ex) { ViewBag.DisplayMessage = "Info"; ModelState.AddModelError("", ex.Message); } }
Код для загрузки второго выпадающего списка:
public JsonResult GetTestTypeList(string id) { if (!string.IsNullOrEmpty(id)) { var labId = Convert.ToInt32(id); var testTypes = from s in db.TestTypes where s.LabId == labId select s; return Json(new SelectList(testTypes.ToArray(), "TestTypeId", "TestName"), JsonRequestBehavior.AllowGet); } else { var testTypeId = Convert.ToInt32(id); var testTypes = from s in db.TestTypes where s.TestTypeId == 0 select s; return Json(new SelectList(testTypes.ToArray(), "TestTypeId", "TestName"), JsonRequestBehavior.AllowGet); } } [AcceptVerbs(HttpVerbs.Get)] public JsonResult LoadTestTypeByLabId(string labName) { var labList = GetTestType(Convert.ToInt32(labName)); var labData = labList.Select(m => new SelectListItem() { Text = m.TestName, Value = m.TestTypeId.ToString(), }); return Json(labData, JsonRequestBehavior.AllowGet); } public IList<TestType> GetTestType(int testTypeId) { return db.TestTypes.Where(m => m.TestTypeId == testTypeId).ToList(); }
F-ES Sitecore
Вы не можете добавлять флажки в выпадающие списки, html-компоненты этого не поддерживают. Вам нужно будет найти какой-нибудь плагин, который имеет эту функцию.
Uwakpeter
Сэр, есть ли в любом случае я могу достичь этого с помощью списка флажков mvc, я имею в виду без выпадающего списка, если я могу привязать его к контрольному списку, это тоже было бы прекрасно.
F-ES Sitecore
Конечно, если вы загуглите, то найдете множество примеров
https://stackoverflow.com/questions/37778489/how-to-make-check-box-list-in-asp-net-mvc
Uwakpeter
Да, я видел этот пример во время поиска решения, мой подход немного отличается, я хочу заполнить список флажков при выборе выпадающего списка лаборатории, я не смог заставить его работать таким образом. Мы будем признательны за любую помощь.