Mohsin Mustufa Ответов: 2

В MVC выпадающего нагрузки onChange, после чего еще один выпадающий


привет у меня есть два выпадающих списка на странице Я хочу чтобы когда я выбираю какое то значение из первого выпадающего списка то во втором выпадающем списке все значения загружаются в соответствии с выбранным значением
оба выпадающих списка привязываются динамически

Смотреть
Первый Выпадающий Список
@Html.DropDownList("Departments",dept,"--Select Department--",new { @required="required" })

Второй Выпадающий Список
@Html.DropDownList("Physician", phy, "--Select Physician--", new { @required="required" })


Функция для привязки значений
public List<SelectListItem> Departments()
        {
            List<SelectListItem> dept = new List<SelectListItem>();
            var query = from u in db.Departments select u;
            if (query.Count() > 0)
            {
                foreach (var v in query)
                {
                    dept.Add(new SelectListItem { Text = v.Name, Value = v.ID.ToString() });
                }
            }
            return dept;
        }


public List<SelectListItem> Physicians()
        {
            List<SelectListItem> phy = new List<SelectListItem>();
            var query = from u in db.Physicians select u;
            if (query.Count() > 0)
            {
                foreach (var v in query)
                {
                    phy.Add(new SelectListItem { Text = v.FirstName + " " + v.LastName, Value = v.ID.ToString() });
                }
            }
            return phy;
        }

2 Ответов

Рейтинг:
12

Hammad

язык JavaScript

<script type="text/javascript">
     $(document).ready(function () {
         $("#departmentList").change(function () {
             var dID= $(this).val();             
             $.getJSON("../Home/LoadPhysiansByDepartment", { deptId: dID },
                    function (data) {
                        var select = $("#physiciansList");
                        select.empty();
                        select.append($('<option/>', {
                            value: 0,
                            text: "Select a Physian"
                        }));
                        $.each(data, function (index, itemData) {
                            select.append($('<option/>', {
                                value: itemData.Value,
                                text: itemData.Text
                            }));
                        });
                    });
         });
});



В Поле Зрения Вы Пишете
@Html.DropDownListFor(Model => Model.Departments, new SelectList(ViewBag.Departments as System.Collections.IEnumerable, "ID", "Name"),

            "Select a Student", new { id = "departmentList" })
        
        <p>
            @Html.DropDownListFor(Model => Model.Physicans, new SelectList(Enumerable.Empty<SelectListItem>(), "phyID", "phyName"),
            "Select a Physican", new { id = "physiciansList" })
        </p>


А В Контроллере

public ActionResult Index()
{
List<SelectListItem> dept = new List<SelectListItem>();
            var query = from u in db.Departments select u;
            if (query.Count() > 0)
            {
                foreach (var v in query)
                {
                    dept.Add(new SelectListItem { Text = v.Name, Value = v.ID.ToString() });
                }
            }
            ViewBag.Departments = dept;
return View();
}
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult LoadPhysiansByDepartment(string deptId)
{
//Your Code For Getting Physicans Goes Here
   var phyList = this.GetPhysicans(Convert.ToInt32(deptId));


   var phyData = classesList.Select(m => new SelectListItem()
    {
       Text = m.phyName,
       Value = m.phyId.ToString(),
    });
       return Json(phyData , JsonRequestBehavior.AllowGet);
}



синтаксис может быть неправильным потому что в настоящее время у меня нет visual studio но идея правильная вы можете исправить синтаксис на своей стороне


Member 11282084

Не могли бы вы рассказать мне, как скрыть какое-то текстовое поле в выпадающем списке selectedindexchange event в mvc5

Heba Kamel

Привет,
Спасибо Вам за это решение
но как получить выбранное значение в contoller, чтобы сохранить его ?
спасибо

Nobert Paa Qwame Mensah

работает на меня большое спасибо

Рейтинг:
0

Member 13608851

Этот сайт мне очень помог, так что я кое-что отдаю взамен. ваше здоровье ! Этот код работает без каких-либо ошибок.Спасибо
язык JavaScript

<pre>    <script type="text/javascript">
     $(document).ready(function () {
         $("#Typeid").change(function () {
             var dID = $('#Typeid option:selected').val();
             $.getJSON("../Manage/GETSubType", { Typeid: dID },
                    function (data) {
                        var select = $("#subtypeid");
                        select.empty();
                        select.append($('<option/>', {
                            value: 0,
                            text: "Select project sub-types"
                        }));
                        $.each(data, function (index, itemData) {
                            select.append($('<option/>', {
                                value: itemData.Value,
                                text: itemData.Text
                            }));
                        });
                    });
         });
});

        </script>

Контроллер
[AcceptVerbs(HttpVerbs.Get)]
    public JsonResult GETSubType(string Typeid)
    {

        dbproject = new DbProject();


          return Json(dbproject.ProjectType_SubTypeList(Convert.ToDouble( Typeid)), JsonRequestBehavior.AllowGet);

    }

Метод в классе
<pre>  public List<SelectListItem> ProjectType_SubTypeList(double id)
        {
            var subtypes = from u in db.SubType where u.ProjectTypeID==id.ToString()  select u;
            List<SelectListItem> ProjectsubTypes = new List<SelectListItem>();
            ProjectsubTypes.Clear();
         //   ProjectsubTypes.Add(new SelectListItem { Text = "--Select Project sub-Type--", Value = "0" });
            if (subtypes!=null)
            {
                foreach(var subtype in subtypes)
                {
                    ProjectsubTypes.Add(new SelectListItem { Text = subtype.name, Value = subtype.id.ToString() });
                }
            }
            return ProjectsubTypes;
        }

View
<pre> <div class="form-group">
                        <div class="form-group col-md-6 col-sm-6 col-xs-12 has-feedback">
                            @Html.DropDownListFor(model => model.Project.ProjectType, new SelectList(ViewBag.Type as System.Collections.IEnumerable, "Value", "Text"), new { @class = "form-control", @id = "Typeid" })
                            @Html.ValidationMessageFor(model => model.Project.ProjectType, "", new { @class = "text-danger" })
                        </div>
                  <div class="form-group col-md-6 col-sm-6 col-xs-12 has-feedback">
                            @Html.DropDownListFor(model => model.Project.SubProjectID, new SelectList(Enumerable.Empty<SelectListItem>(), "id", "name"),
                            "Select project sub-types", new { @class = "form-control", @id = "subtypeid" })
                            @Html.ValidationMessageFor(model => model.Project.SubProjectID, "", new { @class = "text-danger" })
                        </div>
                    </div>


Member 13663829

это дает мне груз ошибок