Раскрывающийся список падежных регистров не выбирается при нажатии кнопки - PullRequest
0 голосов
/ 16 июня 2019

У меня есть два выпадающих списка.Первый раскрывающийся список заполняется ViewModel.Вторичный раскрывающийся список заполняется с помощью Ajax (каскадный раскрывающийся список).У меня это работает нормально, но после того, как я нажму кнопку и вернусь на ту же страницу, второй раскрывающийся список не будет выбран или возвращается к значению по умолчанию.ниже мой код, спасибо

 @Html.DropDownListFor(model => model.PaymentCode, (List<SelectListItem>)ViewBag.country, new { @class = "form-control" })
 @Html.DropDownListFor(model => model.AddNewThirdParty, (List<SelectListItem>)ViewBag.thirdPartyDDL, new { @class = "form-control" })
 <input type="button" value="Add New" name="action:AddNewThirdParty" style="@displayButtonAddThirdParty" onclick="return addnewthirdparty();" />

 $(document).ready(function () {
     $("#PaymentCode").change(function () {
        $("#AddNewThirdParty").empty();
        $.ajax({
            type: 'POST',
            url: '@Url.Action("GetInsuranceCompany")',
            dataType: 'json',
            data: { code: $("#PaymentCode").val() },
            success: function (states) {

                $.each(states, function (i, state) {

                    $("#AddNewThirdParty").append('<option value="' + state.Value + '">' +
                        state.Text + '</option>');
                });
            },
            error: function (ex) {
                alert('Failed to retrieve states.' + ex);
            }
        });
        return false;
     })
 });

контроллер

public ActionResult GetInsuranceCompany(string code, string filter)
{
    string codeJP = string.Empty;
    ParamJenisPembayaran paramJP = db.ParamJenisPembayarans.Where(x => x.Code == code).FirstOrDefault();
    if (paramJP != null) codeJP = paramJP.Name;
    var states1 = db.InsuranceCompany_CSFs.Where(x => x.JenisPembayaran == codeJP).ToList();
    List<SelectListItem> listates = new List<SelectListItem>();
    listates.Add(new SelectListItem { Text = "select_thrid_party", Value = " " });
    if (states1 != null){
        foreach (var x in states1){
           listates.Add(new SelectListItem { Text = x.CompanyID + " - " + x.CompanyName, Value = x.CompanyID });
        }
    }
    return Json(new SelectList(listates, "Value", "Text", JsonRequestBehavior.AllowGet));
}

 public ActionResult AddNewContractNo(ParamBlacklistPembayaranViewModel model){
   string[] arrContractNumber = string.IsNullOrEmpty(model.ContractNumber) ? null : model.ContractNumber.Split(new string[] { ";#" }, StringSplitOptions.RemoveEmptyEntries);
   ViewBag.ContractNumberList = arrContractNumber;
   return View("Create", model);
 }

1 Ответ

1 голос
/ 16 июня 2019

Поскольку вы использовали событие change(), ваш второй раскрывающийся список будет заполняться только там, где есть изменения в первом раскрывающемся списке, поэтому вы можете изменить свой код так, чтобы второе раскрывающееся меню также могло заполняться при загрузке страницы.Попробуйте следующий код:

$(document).ready(function () {
             populateCascadeList();
             $("#PaymentCode").change(function () {
                 populateCascadeList();
                return false;
             })
         });
}

 function populateCascadeList(){
        $("#AddNewThirdParty").empty();
                $.ajax({
                    type: 'POST',
                    url: '@Url.Action("GetInsuranceCompany")',
                    dataType: 'json',
                    data: { code: $("#PaymentCode").val() },
                    success: function (states) {

                        $.each(states, function (i, state) {

                            $("#AddNewThirdParty").append('<option value="' + state.Value + '">' +
                                state.Text + '</option>');
                        });
                    },
                    error: function (ex) {
                        alert('Failed to retrieve states.' + ex);
                    }
                });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...