Как установить значение для выпадающего списка - PullRequest
0 голосов
/ 24 сентября 2019

Я использую jQuery для установки элементов второго раскрывающегося списка при выборе первого раскрывающегося списка.Во время действия редактирования я хочу установить извлеченные данные во второй выпадающий список.Я хочу установить ViewBag.UserLinkedList для второго выпадающего списка.

View:
        <div class="form-row">
          <div class="col-lg-7">
            @Html.Label("User Type") @Html.DropDownListFor(m => m.LoginUserTypeID(SelectList)ViewBag.LoginUserTypeList, "--- Select User Type ---", new { @class = "form-control" })
          </div>
        </div>
        <div class="form-row">
          <div class="col-lg-7">
            @Html.Label("Parent User") @Html.DropDownListFor(m => m.UserLinkedID, new SelectList(""), "--- Select ---", new { @class = "form-control" })
          </div>
    <script>

        $(document).ready(function() {
          $("#LoginUserTypeID").change(function() {
            $.get("/User/GetParentUserList", {
              UserTypeID: $("#LoginUserTypeID").val()
            }, function(data) {
              $("#UserLinkedID").empty();
              $.each(data, function(index, row) {
                $("#UserLinkedID").append("<option value='" + row.Id + "'>" + row.Name + "</option>")
              });
            });
          })
        });

    </script>

Контроллер:

public JsonResult GetParentUserList(int UserTypeID)
{
  List<V_Dealer_DealerEmployee> LinkedIDList = new List<V_Dealer_DealerEmployee>();
  if (UserTypeID == 1 || UserTypeID == 2)
  {
    var d = from s in db.VDNSEmployeeMaster
              select new
              {
                Id = s.EmpId,
                Name = s.FirstName + " " + s.MiddleName + " " + s.LastName
              };
    d.ToList();
    return Json(d.ToList(), JsonRequestBehavior.AllowGet);
  }
  else
  {
    var unionAll = (from word in db.VDNSDealer select new 
    { 
      Id = word.m_code, 
      Name = word.institute_name 
    }).Concat(from word in db.DealerEngineerMaster select new { 
      Id = word.EnggId, 
      Name = word.EngineerName 
    });
    return Json(unionAll.ToList(), JsonRequestBehavior.AllowGet);
  }
}

Редактировать действие

    public ActionResult Edit(int id)
    {
var user = db.Users.SingleOrDefault(c => c.Id == id);
if (user == null)
  return HttpNotFound();

List<LoginUserType> LoginUserTypeList = db.LoginUserType.ToList();
ViewBag.LoginUserTypeList = new SelectList(LoginUserTypeList, "UserTypeId", "UserTypeName");
List<V_Dealer_DealerEmployee> UserLinkedList = db.VDealerDealerEmployee.ToList();
ViewBag.UserLinkedList = new SelectList(UserLinkedList, "Id", "Name");

    return View("New", user);
    }

1 Ответ

0 голосов
/ 24 сентября 2019

После возврата вида из действия edit необходимо вызвать функцию change для LoginUserTypeID.Вот необходимые вам js

function UpdateUserLinkedIdDropdown(){
    var userTypeId = $("#LoginUserTypeID").val();
    //This check is for no options selected in LoginUserTypeID Dropdown
    if(userTypeId === null || userTypeId === "" || userTypeId === undefined)
        userTypeId = 0;
    $.get("/User/GetParentUserList", {
            UserTypeID: userTypeId
        }, function(data) {
        $("#UserLinkedID").empty();
        $.each(data, function(index, row) {
            $("#UserLinkedID").append("<option value='" + row.Id + "'>" + row.Name + "</option>")
        });
    });
}

$("#LoginUserTypeID").change(function() {
    UpdateUserLinkedIdDropdown();
});

// Call it initially when view loaded
// You can do it in this way
UpdateUserLinkedIdDropdown();
// OR This way
$("#LoginUserTypeID").trigger('change');

Попробуйте!Я думаю, что это будет работать.Если не комментирует плз

...